Fehler, Irrtümer, Fragen - Seite 770

 
maryan.dirtyn:
...

p.s. diejenigen, die mir sagen, ich solle Standardbibliotheken verwenden, bitte nicht stören, ich möchte wissen, was mein Experte tut und nicht hoffen, dass es später nicht abflacht

Zumindest die Standardbibliotheken können eingesehen/studiert werden, und man kann nachvollziehen, welche Fehler gemacht worden sind. Eine sehr gute Gelegenheit.
 

Ich versuche das schon seit 6 Stunden, und ich bin geneigt zu glauben, dass es unmöglich ist.

Ich werde nichts Standardmäßiges verwenden, wenn Sie mich entschuldigen...

 
maryan.dirtyn:

Ich versuche das schon seit 6 Stunden, und ich bin geneigt zu glauben, dass es unmöglich ist.

Ich werde nichts Standardmäßiges verwenden, wenn Sie mich entschuldigen...

Was macht Ihnen an Standardbibliotheken so viel Angst? Schauen Sie, was in der Datei Trade.mqh steht:

Funktion zur Eröffnung einer Position:

//+------------------------------------------------------------------+
//| Open position.                                                   |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- checking
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action      =TRADE_ACTION_DEAL;
   m_request.symbol      =symbol;
   m_request.magic       =m_magic;
   m_request.volume      =volume;
   m_request.type        =order_type;
   m_request.price       =price;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.deviation   =m_deviation;
   m_request.type_filling=m_type_filling;
   m_request.comment     =comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

Sie werden mir zustimmen, dass dies nicht viel anders ist als das, was Sie zu tun versuchen. Achten Sie auf die Funktion ClearStructures(). Wenn die Anschläge nach dem Öffnen der Position gesetzt werden müssen, hilft Ihnen die folgende Funktion dabei:

//+------------------------------------------------------------------+
//| Modify specified opened position.                                |
//+------------------------------------------------------------------+
bool CTrade::PositionModify(const string symbol,const double sl,const double tp)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action=TRADE_ACTION_SLTP;
   m_request.symbol=symbol;
   m_request.sl    =sl;
   m_request.tp    =tp;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

Es ist einfach und alles funktioniert. Und dann können Sie nach eigenem Ermessen etwas hinzufügen/ändern/experimentieren.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
maryan.dirtyn:

Ich versuche das schon seit 6 Stunden, und ich bin geneigt zu glauben, dass es unmöglich ist.

Ich werde keine der üblichen verwenden, wenn Sie mich entschuldigen...

Speziell für Sie:

#include <trade\trade.mqh>
void OnStart()
  {
   CTrade trade;
   trade.Buy(1.0,"EURUSD",SymbolInfoDouble("EURUSD",SYMBOL_ASK),1.20000,1.50000,"Yeah, baby!");
  }

Um das Unbekannte zu berühren, fügen Sie einfach diesen Code in das Skript ein, kompilieren Sie, setzen Sie dann den Cursor auf Kaufen und drücken Sie Alt + G.

Sie beginnen eine Reise durch die Interna aller Bibliotheken. Betrachten Sie gleichzeitig die Fehlerbehandlung.

 
Renat:

Speziell für Sie:

Um das Unbekannte zu berühren, fügen Sie einfach diesen Code in das Skript ein, kompilieren ihn, setzen den Cursor auf Kaufen und drücken Alt+G.

Sie beginnen eine Reise durch die Interna aller Bibliotheken. Betrachten Sie gleichzeitig die Fehlerbehandlung.


"Yeah, baby!"
Sie können sogar die oben genannten Dinge sagen und alles wird gut. )))
 

Ich nehme an, es gibt keine andere Möglichkeit, dies zu tun, oder?

#include <trade\trade.mqh>
 
maryan.dirtyn:

Ich nehme an, es gibt keine andere Möglichkeit, dies zu tun, oder?

Erstellen Sie ähnliche Funktionen in der Hauptdatei, und Sie müssen nichts mehr einfügen.
 

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

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

bool OPEN(){
             MqlTradeRequest request; ZeroMemory(request);
             MqlTradeResult  result;  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);}
 
maryan.dirtyn:

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

Ich möchte keine Standardbibliotheken verwenden, weil ich Flags und globale Variablen innerhalb von Funktionen verwende und es nicht sinnvoll erscheint, trade.mqh und andere Funktionen auseinander zu nehmen

Auf welchem Server und mit welchem Symbol versuchen Sie es?

Ich habe Ihren Code auf MetaQuotes-Demo ausgeführt und die Transaktion war erfolgreich:

2012.07.11 15:08:36     Trades  '1026582': deal #109507221 buy 2.00 EURUSD at 1.22625 done (based on order #115678901)
2012.07.11 15:08:36     Trades  '1026582': order #115678901 buy 2.00 / 2.00 EURUSD at 1.22625 done
2012.07.11 15:08:36     Trades  '1026582': instant buy 2.00 EURUSD at 1.22627 sl: 1.22127 tp: 1.23127 (deviation: 100)
 

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)