[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 867

 

Cari esperti. Sto imparando a programmare. Ho fatto il mio primo EA, ma apre un affare e non fa altro. Non ha scritto un errore nel diario. Ho bisogno del vostro aiuto!

//+------------------------------------------------------------------+
//|                                                Monetny dvor1.mq4 |
//|                                                            fanat |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "fanat"
#property link      "http://www.metaquotes.net"

extern double Lot=0.1;          //Рабочий лот
extern double TakeProfit=149;    //
extern double StopLoss=275;      //          
extern int Total=1;             //Колличество ордеров   
//+------------------------------------------------------------
int start()
{//1
if(TakeProfit<10)
{//2 
  Alert("Ошибка,TakeProfit слишком близко");
  return;
}//2
     
if(StopLoss<10)
{//2
  Alert("Ошибка,StopLoss слишком близко");
  return;
}//2

if(Total<1)
{//2
  Alert("Ошибка, неизвестно колличество ордеров");
  return;
}//2
bool Buy=false;
bool Sell=false;
bool BuyClose=false;
bool SellClose=false;                                                                             
if(iHigh(NULL,PERIOD_M15,2)<iClose(NULL,PERIOD_M15,1))Buy=true;
if(iLow(NULL,PERIOD_M15,2)>iClose(NULL,PERIOD_M15,1))Sell=true;
if(iClose(NULL,PERIOD_M15,2)>iClose(NULL,PERIOD_M15,1))BuyClose=true;
if(iClose(NULL,PERIOD_M15,2)<iClose(NULL,PERIOD_M15,1))SellClose=true;
if(Buy==false&&Sell==false&&BuyClose==false&&SellClose==false)return;
int err;                                                 //
int ticket;                                              //
int Order_Count[6];                                      //
int OP=-1;                                               //
ArrayInitialize(Order_Count,0);                          //
                                                          //Блок учета ордеров
for(int i=1; i<=OrdersTotal(); i++)                      //
{//2                                                     //
  if(OrderSelect(i-1, SELECT_BY_POS)==true)               // 
  Order_Count[OrderType()]++;                             //
  if(OP!=-1) return(Order_Count[OP]);                     //                         
}//2
  if(OrderSelect(ticket,SELECT_BY_TICKET))                //Закрытие ордеров Sell
{//2                                                     // 
  if((OrderType()==1)&&(Buy==true||SellClose==true))      //  
  {//3                                                    //
  OrderClose(ticket,Lot,Ask,4);                           //
  err=GetLastError();                                     //Обработка ошибок 
  if(err==0)                                              //
  return;                                                 //  
  else                                                    //
  {//4                                                    //
  Sleep(1000);                                            //
  Alert(err);                                             //
  }//4                                    
  }//3
}//2 
  if(OrderSelect(ticket,SELECT_BY_TICKET))                //Закрытие ордеров Buy
{//2                                                     //
  if((OrderType()==0)&&(Sell==true||BuyClose==true))      // 
  {//3                                                    //  
  OrderClose(ticket,Lot,Bid,4);                           // 
  err=GetLastError();                                     //Обработка ошибок
  if(err==0)                                              //
  return;                                                 //
  else                                                    //
  {//4                                                    //
  Sleep(1000);                                            //
  Alert(err);                                             //
  }//4
  }//3
}//2 
if(Order_Count[OP_BUY]>=Total&&Order_Count[OP_SELL]>=Total) return;                  
                                                                                      
if(Order_Count[OP_BUY]<Total&&Order_Count[OP_SELL]==0&&Buy==true)                    //Открытие ордеров Buy
{//2                                                                                 //
  OrderSend(Symbol(), OP_BUY, Lot, Ask, 4, Ask-StopLoss*Point, Ask+TakeProfit*Point); // 
  err=GetLastError();                                                                 //Обработка ошибок
  if(err==0)                                                                          //
  return;                                                                             //
  else                                                                                //
  {//3                                                                                // 
  Sleep(1000);                                                                        //
  Alert(err);                                                                         //
  }//3
}//2         
           
if(Order_Count[OP_SELL]<Total&&Order_Count[OP_BUY]==0&&Sell==true)                   //Открытие ордеров Sell 
{//2                                                                                 //
  OrderSend(Symbol(), OP_SELL, Lot, Bid, 4, Bid+StopLoss*Point, Bid-TakeProfit*Point);//
  err=GetLastError();                                                                 //Обработка ошибок
  if(err==0)                                                                          //
  return;                                                                             //
  else                                                                                //
  {//3                                                                                //
  Sleep(1000);                                                                        //
  Alert(err);                                                                         //
  }//3
}//2

return;
}//1
 

Potete dirmi come impostare una clausola di divieto di commercio?

Per esempio: se iStochastic >80 allora nottreid (commercio vietato (o apertura di posizione vietata)?

 
fanat:

Cari esperti. Sto imparando a programmare. Ho fatto il mio primo EA, ma apre un affare e non fa altro. Non ha scritto un errore nel diario. Ho bisogno del vostro aiuto!


Un mix infernale, ma funziona (nel tester)

 
Vinin:


Un mix infernale, ma funziona (nel tester)


Mi rendo conto che le condizioni per aprire un accordo sono stupide.
 
Vinin:


Un mix infernale, ma funziona (nel tester)


Costruire 226. Il mio non funziona nemmeno nel tester. Può dirmi perché?
 
fanat:

Costruire 226. Non funziona nemmeno nel mio tester. Può dirmi perché?

Non so perché non funziona per voi. Il codice funziona
 
fanat:

Costruire 226. Non funziona nemmeno nel mio tester. Può dirmi perché?

Scarica il terminale altrove lo stesso Build 226.

 
Vinin:

Perché non funziona per te, non lo so. Il codice funziona.

Capito. Grazie. Proverò a reinstallare MT.
 

Cari esperti. Ho inviato il codice questa mattina. Ha delle condizioni per la chiusura delle compravendite da parte dell'Expert Advisor stesso. Ma chiude i trade solo su TP o SL. E se imposto il TP e lo SL a 900, apre solo un trade e basta. Sto chiedendo aiuto.

 
fanat:

Cari esperti. Ho inviato il codice questa mattina. Ci sono delle condizioni per la chiusura dei trade da parte dell'Expert Advisor stesso. Ma chiude i trade solo su TP o SL. E se imposto il TP e lo SL a 900, apre solo un trade e basta. Sto chiedendo aiuto.


Come può essere altrimenti se il biglietto è sempre 0. Deve essere preassegnato a qualcosa

Per esempio

   int ticket;        

   for(int i=0 i<OrdersTotal(); i++)                      
      if(OrderSelect(i, SELECT_BY_POS))
         ticket=OrderTicket();