Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 234

 
leonerd:

OK, ich verstehe, danke. Ich dachte, ich probiere es mal mit dem EA aus. Aber hier habe ich 5203. Im MT5 funktioniert derselbe Code einwandfrei...

Ich glaube, ich habe es herausgefunden. Ich habe den Timeout auf 5000 gesetzt (das hat auf MT5 funktioniert, aber nicht auf MT4). Ich habe 500 gesetzt - es hat auch auf MT4 funktioniert.

 

Können Sie mir bitte sagen, wie ich eine Funktion aus einem Indikator in einen EA übertragen kann, um direkt darin zu rechnen?


void OnTick()

{

SovExitBuffer[0]= getValue()// }

)?


int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

//---
   int limit;
//---
   if(rates_total<=1)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit=limit+1;

 for(int i=limit-1; i>=0; i--)
 {

  
  upDband1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i)+iStdDev(NULL,0,25,0,MODE_EMA,PRICE_CLOSE,i)*2;
  maDbands1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i);
  deltaDbands1=upDband1-maDbands1;

  ExitBuffer[i]=deltaDbands1; //Это значение нужно получить в советнике в Ontick()
  
  }

   return(rates_total);
  }


 

Können Sie mir sagen, wie man diesen Code 2 Fehler zu schreiben! 1 - Unerwartetes Programmende 2 - Unausgewogene Klammern Was ist falsch im Sinne der unausgewogenen Klammern?

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
  Lot=OrderLots();
  void RefreshRates();
  CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
  CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
 //----------
 //--Открытие ордера1
    Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY EURUSD order : ",GetLastError();
//-------------
//--Ордер 2
          Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY USDCHF order : ",GetLastError());
      
//---------------------------Закрытие старт
  return;
}
 
Tenimagalon:

Können Sie mir sagen, wie man diesen Code 2 Fehler zu schreiben! 1-unerwartetes Programmende 2- Unausgewogene Klammern Was ist los?

Fehler mit Klammern behoben - Sie müssen für gepaart aussehen, oder besser - zuerst die Klammern setzen, und dann innerhalb des Codes zu schreiben:

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
   Lot=OrderLots();
   RefreshRates();
   CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
   //----------
   //--Открытие ордера1
   Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
   if(Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
      else
         Print("Eror opening BUY EURUSD order : ",GetLastError());
     }
   //-------------
   //--Ордер 2
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
   if (Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
     }
   else
      Print("Eror opening BUY USDCHF order : ",GetLastError());
   //---------------------------Закрытие старт
   return;
}

... aber es gibt keine Logik in Ihrem Code...

 

Ich füge hinzu,

dies:

Lot=OrderLots();

wird nicht funktionieren, die Funktion OrderLots() funktioniert, lesen Sie die Hilfe.

Variablen:

CurAskPriceOne und CurAskPriceTwo

werden nirgends angegeben,

müssen Sie es ungefähr machen.

   double CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

wie diese

 
Nun, ich stimme zu, was die Menge angeht. Ah.
  double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

nicht angekündigt und es hat funktioniert. :)

 
Bei mehreren Gelegenheiten habe ich erlebt, dass winzige Zitate im Nachhinein verschwinden. So verschwanden gestern Abend (12.02.) mehrere hundert Datensätze für den 10. bis 11. Tag. Manchmal reicht es aus, im M1-Diagramm auf "Aktualisieren" zu drücken, gestern hat es nicht funktioniert und ich musste die Kurse manuell von einem anderen Terminalimportieren. Der Broker auf dem Server ist in Ordnung, da das gleiche Konto, das in einer anderen Kopie des Terminals geöffnet wird, ein normales Diagramm ohne das Loch zeigt. Was könnte das Problem sein?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
Ich kann nicht herausfinden, wie man Aufträge öffnet, wie man sie schließt, wie man sie nach Typ nimmt, ich kann nicht herausfinden, wie man den Bot dazu bringt, einen verdammten Auftrag zu öffnen und das war's :) Nehmen wir den einfachsten Code: Was muss ich am Anfang oder am Ende eingeben, damit dieser Mistkerl die Bestellung einmal öffnet?
extern double lot =1;
int start()
{
  int Ticket;
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,Ask,2,0,0);
 return(1);
}
 
Tenimagalon:
Ich kann nicht herausfinden, wie man Aufträge öffnet, wie man sie schließt, wie man sie nach Typ nimmt, ich kann nicht herausfinden, wie man den Bot dazu bringt, einen verdammten Auftrag zu öffnen und das war's :) Nehmen wir den einfachsten Code: Was muss ich am Anfang oder am Ende eingeben, damit dieser Mistkerl die Bestellung einmal öffnet?
OrdersTotal() < 1
 
Iurii Tokman:
Ist das, bevor Sie es öffnen?
(
)