Completato

Note

Errore

Session expiration Your session is going to expireClick here to extend

Budget:

Piccolo progetto <800

Pubblicato il

21/02/13 9.55

Cliente

gun***

Questo progetto è scaduto

Pubblica un progetto simile e ricevi velocemente offerte non vincolanti.

Pubblica ora il tuo progetto simile

Descrizione

buongiorno dovrei modificare uno scrip che utilizzo per fare trading  online il formato che utilizza e  acts ho provato a modificarlo e inserirlo nella piattaforma e funziona ma al posto di comprare vende e viceversa e poi se ce la possibilita al posto di mettere gli ordini vorrei che aprisse una posizione

non riesco a mettere il file quindi ve lo lascio qui..

 

const
  StrategyName = 'FractalShift for NFA';   
  StrategyVersion = '1.1';
 
var
  History: TCandleHistory;
  Account: TAccount;
  Amount, Point, last: Double;     
  Fractals: TIndicatorScript;  
  shift: Integer;  
  ordr: Integer; // indicator of the position (0=none; 1=buy; 2=sell)
 
procedure OnCreate;
begin
  Settings.AddCandleHistory(@History, 'Candle History', '', CI_4_Hours, 100);    //setting up the chart history
  History.OnNewCandleEvent := @OnNewCandle;    //indicating the procedure to run when a new candle opens  
  History.OnNewRateEvent := @OnNewRate;
  Settings.AddAccount(@Account, 'Account', '');   //the account number
  Settings.AddFloat(@Amount, 'Amount(Lots)', 1);   //the number of lots
  Settings.AddInteger(@TraderRange, 'TraderRange (pips)', 3);   //setting up the trader range in pips                            
  Settings.SetIntegerRestrictions(@TraderRange, 0, 100, 1);   
  Settings.AddInteger(@Shift, 'Shift', 10);    
  Settings.SetIntegerRestrictions(@Shift, 0, 200, 1);  
  // Fractals indicator setting
  Fractals:= TIndicatorScript.Create(History, 'Fractals', 'Fractals');
  Fractals.SetVariableValue('Period', 5);     
end;
 
procedure OnStart;
begin    
  Point := History.Instrument.PointSize;
  ordr:=0;       
end;
 
procedure remove;
var i:integer;
begin
  for i:=OrderList.Count-1 downto 0 do
    if (OrderList.Get(i).tag='FractalShift_Entrybuy') or (OrderList.Get(i).tag='FractalShift_Entrysell') then
      OrderList.Get(i).Remove;         
end;
 
procedure OnNewCandle;
var i: integer;
begin
  if (Fractals.GetGraph(1).Last=history.last(2).high) or (Fractals.GetGraph(2).Last=history.last(2).low) then
    begin                     
      remove; 
      if ordr = 0 then
        begin 
          CreateEntryOrder(History.Instrument, Account, Amount, bsbuy, History.Instrument.buy+Point*Shift,
                           NullRate,NullRate,
                           otEStop, 'FractalShift_Entrybuy');                                   
          CreateEntryOrder(History.Instrument, Account, Amount, bssell, History.Instrument.Sell-Point*Shift,
                          NullRate,NullRate,
                          otEStop, 'FractalShift_Entrysell'); 
        end; 
      // buy                    
      if ordr = 2 then
        begin                 
          CreateEntryOrder(History.Instrument, Account, 2* Amount, bsbuy, History.Instrument.buy+Point*Shift,
                           NullRate,NullRate,
                           otEStop, 'FractalShift_Entrybuy');
        end;
      // sell           
      if ordr = 1 then                                                                                     
        begin
          CreateEntryOrder(History.Instrument, Account, 2*Amount, bssell, History.Instrument.Sell-Point*Shift,
                          NullRate,NullRate,
                          otEStop, 'FractalShift_Entrysell');       
        end;               
    end; 
end;
 
procedure OnOrderChange(const Action: TDataModificationType; const Order: TOrder);
var i:integer;
begin
//output the order information into the log
if (Action=dmtInsert) then
 begin
  log('Entry order placed: '+order.tag);
  log('Instrument: ' +Order.Instrument.Name);
  log('Account: ' +Order.Account.ID);
  log('Amount: ' +FloatToStr(Order.Amount));
  log('Order rate: ' +FloatToStr(Order.Rate));  
 end;
end;
 
procedure OnTradeChange(const Action: TDataModificationType; const Trade: TTrade);
begin
// if a new trade opened
if Action=dmtInsert then
  begin     
  
  if Trade.Tag='FractalShift_Entrysell' then 
      begin                    
          log('Sell position has been placed');  
          ordr:=2;  
          remove;                  
      end;
  if Trade.Tag='FractalShift_Entrybuy' then 
      begin           
          log('Buy position has been placed');
          ordr:=1; 
          remove;                 
      end;      
  end;  
end;