[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 867

 

Liebe Experten. Ich lerne gerade programmieren. Ich habe meinen ersten EA gemacht, aber er öffnet ein Geschäft und tut nichts anderes. Sie hat keinen Fehler in das Journal geschrieben. Ich brauche Ihre Hilfe!

//+------------------------------------------------------------------+
//|                                                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
 

Können Sie mir sagen, wie ich eine Handelsverbotsklausel festlegen kann?

Zum Beispiel: wenn iStochastic >80 dann nottreid (Handel verboten (oder Positionseröffnung verboten)?

 
fanat:

Liebe Experten. Ich lerne gerade programmieren. Ich habe meinen ersten Expert Advisor erstellt, aber er öffnet ein Geschäft und tut nichts anderes. Sie hat keinen Fehler in das Journal geschrieben. Ich brauche Ihre Hilfe!


Ein höllischer Mix, aber es funktioniert (im Testgerät)

 
Vinin:


Ein höllischer Mix, aber es funktioniert (im Testgerät)


Mir ist klar, dass die Bedingungen für die Eröffnung eines Geschäfts albern sind.
 
Vinin:


Ein höllischer Mix, aber es funktioniert (im Testgerät)


Gebäude 226. Meine funktioniert nicht einmal im Testgerät. Können Sie mir sagen, warum?
 
fanat:

Gebäude 226. Es funktioniert nicht einmal in meinem Testgerät. Können Sie mir sagen, warum?

Ich weiß nicht, warum es bei Ihnen nicht funktioniert. Der Code funktioniert
 
fanat:

Gebäude 226. Es funktioniert nicht einmal in meinem Testgerät. Können Sie mir sagen, warum?

Laden Sie das Terminal an anderer Stelle mit demselben Build 226 herunter.

 
Vinin:

Warum es bei Ihnen nicht funktioniert, weiß ich nicht. Der Code funktioniert.

Ich hab's. Ich danke Ihnen. Ich werde versuchen, MT neu zu installieren.
 

Liebe Experten. Ich habe den Code heute Morgen abgeschickt. Es gibt Bedingungen für den Abschluss von Geschäften durch den Expert Advisor selbst. Aber es schließt die Geschäfte nur auf TP oder SL. Und wenn ich TP und SL auf 900 setze, wird nur ein Handel eröffnet und das war's. Ich bitte um Hilfe.

 
fanat:

Liebe Experten. Ich habe den Code heute Morgen abgeschickt. Es gibt Bedingungen für den Abschluss von Geschäften durch den Expert Advisor selbst. Aber es schließt die Geschäfte nur auf TP oder SL. Und wenn ich TP und SL auf 900 setze, wird nur ein Handel eröffnet und das war's. Ich bitte um Hilfe.


Wie sollte es auch anders sein, wenn das Ticket immer 0 ist. Sie muss einem bestimmten Zweck zugewiesen werden.

Zum Beispiel

   int ticket;        

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