Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 560

 
Puoi dirmi cosa scrivere nel codice in modo che gli ordini non si aprano ad ogni tick?
 
int OnInit()
  {
   double LotSize(string symbol,datetime tbar)
     {
      double size;
      string BQ,currency=AccountCurrency();
      switch(MarketInfo(symbol,MODE_PROFITCALCMODE))
        {
         case 0:
           {
            int sbar=iBarShift(symbol,0,tbar);
            size=MarketInfo(symbol,MODE_LOTSIZE);
            if(StringSubstr(symbol,3,3)=="USD") break;
            if(StringSubstr(symbol,0,3)=="USD") size=size/iClose(symbol,0,sbar);
            else
              {
               BQ=StringSubstr(symbol,0,3)+"USD";
               if(iClose(BQ,0,0)==0) BQ="USD"+StringSubstr(symbol,0,3);
               if(iClose(BQ,0,0)==0) break;
               int BQbar=iBarShift(BQ,0,tbar);
               if(StringSubstr(BQ,0,3)=="USD") size=size/iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
               else size=size*iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
              }
           }
         break;
         case 1: size=MarketInfo(symbol,MODE_LOTSIZE); break;
         case 2: size=MarketInfo(symbol,MODE_TICKVALUE)/MarketInfo(symbol,MODE_TICKSIZE);
        }
      if(currency!="USD")
        {
         BQ=currency+"USD";
         if(iClose(BQ,0,0)==0)
           {
            BQ="USD"+currency;
            size*=iClose(BQ,0,iBarShift(BQ,0,tbar));
           }
         else size/=iClose(BQ,0,iBarShift(BQ,0,tbar));
        }
      return(size);
     }
Ci sono due errori durante la compilazione: Non riesco a capire cosa c'è di sbagliato e come risolverlo. Per favore, datemi un suggerimento.
 
Alexandr Saprykin:
Due errori durante la compilazione: non riesco a capire cosa c'è di sbagliato e come risolverlo. Potresti per favore dirmi come risolvere il problema?
I telepati sono in vacanza e tu non hai un'intestazione o un'estensione nell'intestazione del codice. Come faccio a sapere cos'è e in che lingua è :)
 
Karputov Vladimir:
I telepati sono in vacanza e tu non hai un'intestazione o un'estensione nel codice dell'intestazione. Vai a capire cos'è e in che lingua è :)

Per i percorsi non-televisivi)))

//+------------------------------------------------------------------+
//|                                                   Break Even.mq4 |
//|                                                 Copyright 2016,  |
//|                                         /ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, "
#property link      "/ru"
#property version   "1.00"
#property strict
#property indicator_chart_window   //отображение внутри основного окна
#property indicator_buffers 1
#property indicator_plots   1
//--- plot BreakEven
#property  indicator_label1  "BreakEven"     //название индикатора
#property  indicator_type1   DRAW_LINE      //рисовать линией
#property  indicator_color1  clrGold       // цвет индикатора
#property  indicator_style1  STYLE_SOLID  //стиль индикатора
#property  indicator_width1  1
//--- indicator buffers
double         BreakEvenBuffer[];
//+------------------------------------------------------------------+
//| Рассчитываем точку безубыточности                                |
//+------------------------------------------------------------------+
int OnInit()
  {
   double LotSize(string symbol,datetime tbar)
     {
      double size;
      string BQ,currency=AccountCurrency();
      switch(MarketInfo(symbol,MODE_PROFITCALCMODE))
        {
         case 0:
           {
            int sbar=iBarShift(symbol,0,tbar);
            size=MarketInfo(symbol,MODE_LOTSIZE);
            if(StringSubstr(symbol,3,3)=="USD") break;
            if(StringSubstr(symbol,0,3)=="USD") size=size/iClose(symbol,0,sbar);
            else
              {
               BQ=StringSubstr(symbol,0,3)+"USD";
               if(iClose(BQ,0,0)==0) BQ="USD"+StringSubstr(symbol,0,3);
               if(iClose(BQ,0,0)==0) break;
               int BQbar=iBarShift(BQ,0,tbar);
               if(StringSubstr(BQ,0,3)=="USD") size=size/iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
               else size=size*iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
              }
           }
         break;
         case 1: size=MarketInfo(symbol,MODE_LOTSIZE); break;
         case 2: size=MarketInfo(symbol,MODE_TICKVALUE)/MarketInfo(symbol,MODE_TICKSIZE);
        }
      if(currency!="USD")
        {
         BQ=currency+"USD";
         if(iClose(BQ,0,0)==0)
           {
            BQ="USD"+currency;
            size*=iClose(BQ,0,iBarShift(BQ,0,tbar));
           }
         else size/=iClose(BQ,0,iBarShift(BQ,0,tbar));
        }
      return(size);
     }
//--- indicator buffers mapping
   SetIndexBuffer(0,BreakEvenBuffer);

//---
   return(INIT_SUCCEEDED);
  }
 
Alexandr Saprykin:

Per coloro che non sono telepatici))))

Togliere la funzione LotSize da OnInit().
 
edutak:

Errore di logica, perché gli ordini opposti non si aprono?

Forum sul trading, sistemi di trading automatico e test di strategia

Domande dai principianti

Karputov Vladimir, 2016.04.16 13:04

I telepati sono in vacanza e tu non hai un'intestazione o un'estensione nell'intestazione del codice. Vai a capire cos'è e in che lingua è :)

 
Karputov Vladimir:

Hai bisogno di descrivere l'algoritmo?
 
edutak:
Hai bisogno di descrivere l'algoritmo?

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Domande dai principianti

Karputov Vladimir, 2016.04.16 13:04

I telepati sono in vacanza e tu non hai un'intestazione o un'estensione nell'intestazione del codice. Vai a capire cos'è e in che lingua è :)

 
savinkins:
Ho il nome utente e la password di default per il terminale. Nessun nome di server nella lista di selezione, lo copio. Ora non ho nessun agente nella lista della rete, anche se il saldo si vede.
 
savinkins:

Per aggiornare il terminale, connettersi al server di trading MetaQuotes-Demo.


Motivazione: