Fehler, Irrtümer, Fragen - Seite 771

 
maryan.dirtyn:

Das ist es, was ich tue))... 6. Stunde... und ich kann nicht herausfinden, wo der Fehler liegt

die Abneigung gegen die Verwendung von Standardbibliotheken ist darauf zurückzuführen, dass Flags und globale Variablen innerhalb von Funktionen verwendet werden und es nicht sinnvoll erscheint, trade.mqh und andere Teile zu zerlegen

Und welcher Fehler wird zurückgegeben? )))
 
maryan.dirtyn:

MetaQuotes-Demo

Anmeldung: 1219233

EURUSD

Ich habe es gerade mit dem Pfund probiert, gleiche Geschichte. keine Stopps. ich mache alles im Tester

Build 655 (falls es hilft)

Schreiben Sie eine explizite Initialisierung der Strukturen:

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

Ohne sie bleiben die Strukturfelder mit Müll zurück und Sie füllen nicht alle Felder aus.

 

Ich danke Ihnen...

Das ist die Art, wie ich loslasse:

void OnTick(){ if(PositionsTotal()<1)OPEN(); }

bool OPEN(){
             MqlTradeRequest request={0};  ZeroMemory(request);
             MqlTradeResult  result={0};   ZeroMemory(result);
             

             request.symbol       = _Symbol;
             request.action       = TRADE_ACTION_DEAL;
             request.type_filling = ORDER_FILLING_FOK;
             request.deviation    = 100;
             request.volume       = NormalizeDouble(2,2);
             request.type         = ORDER_TYPE_BUY;
             request.price        = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
             request.tp           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point,_Digits);
             request.sl           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 500*_Point,_Digits);

             OrderSend(request,result);     
                        
             if(result.retcode==10009 || result.retcode==10008)  Print("Succsesful open");
             else                                               Print("Error open: ",DoubleToString(GetLastError(),0),"  response code: ",result.retcode);
    
   return(true);}
 
ZeroMemory() ist bereits überflüssig, da eine sparsamere und einfachere Nullsetzung über ={0} ansteht;
 

Wie kann ich dies auf andere Weise überprüfen? Dieser Entwurf funktioniert nicht richtig.

if(PositionGetDouble(POSITION_PRICE_OPEN)!=PositionGetDouble(POSITION_SL)){ ... }
 

Wann wird es Parameter in OnTrade geben? Wir müssen ein solches Chaos anrichten...

Sie sollten zumindest wissen, welche Parameter vorhanden sein werden. Andernfalls muss ich bis zur Weltmeisterschaft viele von ihnen noch einmal überarbeiten.

 
pronych:

Wann wird es Parameter in OnTrade geben? Wir müssen ein solches Chaos anrichten...

Sie sollten zumindest wissen, welche Parameter vorhanden sein werden. Andernfalls muss ich bis zur Meisterschaft eine Menge davon neu machen((.

Wird morgen in der heutigen Build sein. Ein weiterer Einstiegspunkt wurde hinzugefügt:

void OnTradeTransaction(const MqlTradeTransaction& trans,const MqlTradeRequest& request,const MqlTradeResult& result)
  {
      
  }
 

Es ist klar, was sein sollte: Instrument, Preis, Lot, Art des Handels, usw.

Aber es ist nicht klar, wie man den Preis für den Handel herausfinden kann.

Vielleicht habe ich etwas verpasst, ich war eine Weile weg...

 
Renat:

Wird bereits im heutigen Build enthalten sein. Es wurde ein weiterer Einstiegspunkt hinzugefügt:

Ich danke Ihnen vielmals. Endlich)))

Ich freue mich sehr darauf.

 

Liebe Entwickler! Da das Terminal keine Ask-Historie hat, wäre es sinnvoll, die Stop-Orders (Buy Stop, Sell Stop) an den Bid-Kurs zu binden? Oder um einen Benutzer auswählen zu lassen, zu welchem Preis ein Auftrag ausgelöst werden soll (Bid oder Ask). Ich meine Forex.