Der EA, den ich vor drei Monaten geschrieben habe, kann den Strategietest jetzt nicht bestehen, aber er hat vor zwei oder drei Monaten gut funktioniert!!! - Seite 3

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien


angevoyageur, 2014.02.11 17:59

Hallo,

Bitte verwenden Sie die SRC-Schaltfläche, wenn Sie einen Code posten. Vielen Dank dafür.


Diesmal habe ich es für Sie bearbeitet.


 
jitanic:

Hallo

send order work in demo account but in real account don't work(2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: error 4756, retcode = 10006)


Warum benutzt du diese Notation, sie ist schwer zu verstehen:

   request.action=5;
   request.type=6;
   request.type_filling=2;

Ich würde das stattdessen verwenden:

   request.action=TRADE_ACTION_PENDING;
   request.type=ORDER_TYPE_BUY_STOP_LIMIT;
   request.type_filling=ORDER_FILLING_RETURN;  

Übrigens, bei mir funktioniert es in jedem Fall.


 

es tut mir leid

bitte überprüfen Sie dieses Skript und geben Sie mir meinen Fehler:

#property description "Expert Advisor for sending trade requests "
" using OrderSendAsync() function.\r\n"
#property description "Handling trading events using"
" OnTrade() and OnTradeTransaction() handler functions is displayed\r\n"
#property description "Expert Advisor parameters allow setting Magic Number"
" (unique ID) "
#property description "and the mode of displaying messages in Experts log. All details are displayed by default.\r\n"
input int  MagicNumber=1234567;      // Expert Advisor ID
input bool DescriptionModeFull=true; // Detailed output mode
input double  Price=2652;
input double  Volume=1000;
input double  stoplimit=2681;
input double  sl=1000;
input double  tp=2681;
//+------------------------------------------------------------------+
int OnInit()
  {
//--- check if autotrading is allowed
   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
     {
      Alert("Autotrading in the terminal is disabled, Expert Advisor will be removed.");
      ExpertRemove();
      //--     return(-1);
     }
   CreateBuySellButtons();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"Buy");
   ObjectDelete(0,"Sell");
   ObjectDelete(0,"HALL");
  }
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {

  }
//+------------------------------------------------------------------+
void OnTrade()
  {

  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- handling CHARTEVENT_CLICK event ("Clicking the chart")
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      //--- if "Buy" button is pressed, then buy
      if(sparam=="Buy")
        {
         BuyA(Volume);
         //--- unpress the button
         ObjectSetInteger(0,"Buy",OBJPROP_STATE,false);
        }
      //--- if "Sell" button is pressed, then sell
      if(sparam=="Sell")
        {
         SellA(Volume);
         //--- unpress the button
         ObjectSetInteger(0,"Sell",OBJPROP_STATE,false);
        }
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
void CreateBuySellButtons()
  {
   ObjectCreate(0,"Buy",OBJ_BUTTON,0,0,0); // create "Buy" button
   ObjectSetInteger(0,"Buy",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Buy",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Buy",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Buy",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Buy",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Buy",OBJPROP_TEXT,"Buy");
   ObjectSetInteger(0,"Buy",OBJPROP_COLOR,clrRed);
   ObjectCreate(0,"Sell",OBJ_BUTTON,0,0,0); // create "Sell" button
   ObjectSetInteger(0,"Sell",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"Sell",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,"Sell",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"Sell",OBJPROP_YSIZE,30);
   ObjectSetString(0,"Sell",OBJPROP_TEXT,"Sell");
   ObjectSetInteger(0,"Sell",OBJPROP_COLOR,clrBlue);
   ObjectCreate(0,"HALL",OBJ_LABEL,0,0,0); // create LABEL
   ObjectSetInteger(0,"HALL",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,"HALL",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"HALL",OBJPROP_YDISTANCE,150);
   ObjectSetInteger(0,"HALL",OBJPROP_XSIZE,70);
   ObjectSetInteger(0,"HALL",OBJPROP_YSIZE,30);
   ObjectSetString(0,"HALL",OBJPROP_TEXT,_Symbol);
   ObjectSetInteger(0,"HALL",OBJPROP_COLOR,clrBlue);
   ChartRedraw();
  }
//+------------------------------------------------------------------+
void BuyA(double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult  result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(check);
   request.action=TRADE_ACTION_PENDING;
   request.symbol=_Symbol;
   request.volume=1000.00;
  request.price=2652.000;
   request.stoplimit=2652.000;
   request.sl=0;
   request.tp=0;
request.type=ORDER_TYPE_BUY_STOP_LIMIT;
request.type_filling=ORDER_FILLING_RETURN; 
   request.type_time=0;
   request.expiration=0;
  request.magic=0;
request.comment="";
   if(!OrderSend(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
//---
  }
//+------------------------------------------------------------------+
void SellA(double volume)
  {
//--- prepare the request
   MqlTradeRequest request;
   request.action=TRADE_ACTION_DEAL;
   request.symbol=_Symbol;
   request.magic=0;
   request.volume=Volume;
   request.type=ORDER_TYPE_SELL;
   request.price=SymbolInfoDouble(request.symbol,SYMBOL_BID);
   request.deviation=10;
   request.comment="Sell using OrderSendAsync()";
   MqlTradeResult  result;
   if(!OrderSendAsync(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
  }
//+------------------------------------------------------------------+
 
jitanic:

es tut mir leid

bitte überprüfen Sie dieses Skript und geben Sie mir meinen Fehler:

Es funktioniert bei mir. Ich habe TadbirTrader-Server verwendet, um es zu testen.
 
angevoyageur:
Bei mir funktioniert es. Ich habe TadbirTrader-Server verwendet, um es zu testen.
haben Sie echte Konto oder überprüfen Sie in Demo-Konto?!
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Environment State / Account Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Environment State / Account Properties - Reference on algorithmic/automated trading language for MetaTrader 5
 
jitanic:
haben sie ein echtes konto oder ein demokonto?!

Nur Demokonto.

P.S: Entschuldigung, dass ich den Punkt übersehen habe, dass es bei Ihnen auch auf dem Demokonto funktioniert.

Welcher Wert wird auf Ihrem echten Konto von zurückgegeben:

   printf("expiration=%i",SymbolInfoInteger(_Symbol,SYMBOL_EXPIRATION_MODE));
   printf("filling=%i",SymbolInfoInteger(_Symbol,SYMBOL_FILLING_MODE));
 

In der Demo funktioniert es bei mir,

kann es vom Server eingeschränkt sein?

 
jitanic:

In der Demo funktioniert es bei mir,

kann es vom Server eingeschränkt sein?

Offensichtlich gibt es etwas, das Sie daran hindert, diese Pending Order zu platzieren. Wahrscheinlich gibt es unterschiedliche Einstellungen für dieses Symbol auf dem Real-Konto (siehe meinen vorherigen Beitrag).

Die Fehlermeldung 10006: request rejected ist nicht sehr hilfreich. Wie oft haben Sie versucht, diese Order zu platzieren?

Die aktuellen Bid/Ask/Last auf dem Demokonto sind 2638/2652/2640, ist das auf dem Realkonto auch so?

 
angevoyageur:

Es gibt offensichtlich etwas, das Sie daran hindert, diese Pending Order zu platzieren. Wahrscheinlich gibt es verschiedene Einstellungen für dieses Symbol auf dem Real-Konto (siehe meinen vorherigen Beitrag).

Die Fehlermeldung 10006: Anfrage abgelehnt ist nicht sehr hilfreich. Wie oft haben Sie versucht, diese Order zu platzieren?

Die aktuellen Bid/Ask/Last auf dem Demokonto sind 2638/2652/2640, ist das auf dem Realkonto auch so?

Hallo, danke für die Antwort

Ich füge ein Bild der Symboleigenschaften bei.

wenn es nicht hilft, sagte mir: wo fügen Sie Druckauftrag in meinem Code?

Dateien:
Untitled.png  47 kb
 
jitanic:

Hallo, danke für die Antwort

Ich füge ein Bild der Symboleigenschaften bei.

wenn es nicht hilft, sagte mir: wo füge ich die Druckreihenfolge in meinem Code ein?

Ich kann nicht sehen, warum es nicht funktioniert.

Können Sie es jetzt noch einmal versuchen? Funktioniert es immer noch nicht?

Grund der Beschwerde: