Domande da un "manichino" - pagina 239

 
forward666:

Grazie! Se puoi darmi qualche consiglio, sarebbe fantastico!

Leggerò di più sullo stylizer.

Prova invece:

bool first;

scrivere:

bool first=true;
 
Cari signori! Si prega di consigliare ai "dummies" come (o piuttosto dove) scaricare un Expert Advisor gratuito dal mercato? So dove installare gli Expert Advisors standard... non posso farlo dal Market - quale applicazione dovrei usare?
 
Sokrat:

Cari signori! Si prega di consigliare ai "dummies" come (o piuttosto dove) scaricare un Expert Advisor gratuito dal mercato? So dove installare un normale EA... non posso farlo dal Market - quale applicazione dovrei usare?
Il modo più semplice per farlo dal terminale, il Toolbox ha la scheda Market
 
Sokrat:

Cari signori! Si prega di consigliare ai "dummies" come (o piuttosto dove) scaricare un Expert Advisor gratuito dal mercato? So dove installare gli Expert Advisors standard... non posso farlo dal Market - quale applicazione dovrei usare?



 

forward666: У меня при запуске робота сразу открывается позиция,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift=10; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit=100; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof=10;
input int MA_Period=50; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[3]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
   maHandle=iMA(NULL,0,MA_Period,2,MODE_SMA,PRICE_CLOSE);
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   first=false;
   if(!Sym.Name(_Symbol))
     {
      Alert("Ошибка инициализации CSymbolInfo, поворите попытку");
      return(-1);
     }
   Print("Инициализация эксперта выполнена");
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("Ошибка копирования буферов индикаторов - номер ошибки:",GetLastError());
      return;
     }
   if(!Sym.RefreshRates()) return;
   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }
   Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)*0.66/1000/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   Lots=MathMin(999,MathMax(1,Lots));
   Lots=NormalizeDouble(Lots,2);
   if(Pos.Select(_Symbol))
     {
      if(Pos.Profit()>2)
        {
         Trade.PositionClose(_Symbol,Sym.Spread()*2);
        }
      else
        {
         if(Pos.PositionType()==POSITION_TYPE_BUY)
           {
            if((Pos.PriceOpen()-Sym.Ask())/Sym.Point()>Limit)// || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
         else if(Pos.PositionType()==POSITION_TYPE_SELL)
           {
            if((Sym.Bid()-Pos.PriceOpen())/Sym.Point()>Limit)// || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
        }
     }
   else
     {
      if(b-Sym.Bid()>=Shift*Sym.Point() && maVal[0]>maVal[1] && maVal[1]>maVal[2] && Sym.Bid()<maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,Sym.Bid(),0,0,""); //Sym.Bid()+0.0030
                                                                            // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Sell");
        }
      if(Sym.Ask()-a>=Shift*Sym.Point() && maVal[0]<maVal[1] && maVal[1]<maVal[2] && Sym.Ask()>maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,Sym.Ask(),0,0,""); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Buy");
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

Avete prima del primo tick: first==false, e le variabili a e b non sono inizializzate. Ecco perché al primo segno di spunta la condizione

   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }

non funziona, e le variabili a e b rimangono non inizializzate.

Se dopo aver risolto questo problema la posizione sarà ancora aperta, stampate i valori dell'array per MA, ask, bid e le variabili a e b.

 

Salve.

Sono un vero tonto, quindi non prendetemi a calci).

La mia domanda è: come posso estrarre i dati delle quote da Metatrader 5?

Ho convertito le citazioni in un file excel e l'ho portato sul mio posto di lavoro dove non ho accesso a internet e ci ho lavorato.

Ma in 5 metatrader non so come convertire i suoi file in excel. Puoi dirmelo per favore. A quanto pare, ho bisogno di un'istruzione passo dopo passo o di uno script (non conosco il linguaggio di programmazione, ma so come utilizzare script, expert advisor o indicatori), che potrebbe essere avviato in un timeframe necessario, anche se non è standard (M3 o M7, per esempio). Vorrei anche chiedervi di non chiedermi di iniziare a studiare il linguaggio di programmazione, per favore.

Vorrei solo passare definitivamente a MT5 per non dover lavorare con due metatrader.

Davvero sperando per il vostro aiuto, persone competenti, sarebbe grato alla tomba =).

Saluti, Alexey.

 
Hronoptal:

...

In parte qui troverete quello che vi serve: Come preparare le quotazioni di MetaTrader 5 per altri programmi

Se non vuoi imparare, puoi ordinare quello che vuoi nella sezione Lavori. ))

 

Grazie mille, caro tol64, per il suggerimento.

E per quanto riguarda l'apprendimento, è ancora una questione di mancanza di tempo, purtroppo.

Molte grazie ancora.

Cordialmente, Alexey.

 
È possibile che il test dell'indicatore visivo mostri 2 o più indicatori invece di 1 solo?
 
paladin800:
È possibile fare in modo che 2 o più indicatori vengano mostrati durante il test dell'indicatore visivo e non solo 1?
Salva il modello con il nome del file tester.tpl con tutti gli indicatori richiesti e attiva il test in modalità di visualizzazione.