Questions d'un "mannequin - page 239

 
forward666:

Merci ! Si vous pouvez me donner des conseils, ce serait génial !

Je vais lire davantage sur le styliste.

Essayez plutôt :

bool first;

écrire :

bool first=true;
 
Messieurs ! Veuillez indiquer aux "nuls" comment (ou plutôt où) télécharger un conseiller expert gratuit sur le marché ? Je sais où installer les Expert Advisors standard... Je ne peux pas le faire à partir du Market - quelle application dois-je utiliser ?
 
Sokrat:

Messieurs ! Veuillez indiquer aux "nuls" comment (ou plutôt où) télécharger un conseiller expert gratuit sur le marché ? Je sais où installer un EA ordinaire... Je ne peux pas le faire à partir du Market - quelle application dois-je utiliser ?
Le moyen le plus simple de le faire à partir du terminal, la boîte à outils a l'onglet Marché
 
Sokrat:

Messieurs ! Veuillez indiquer aux "nuls" comment (ou plutôt où) télécharger un conseiller expert gratuit sur le marché ? Je sais où installer les Expert Advisors standard... Je ne peux pas le faire à partir du Market - quelle application dois-je utiliser ?



 

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();
  }

Vous avez avant le premier tic : first==false, et les variables a et b sont non initialisées. C'est pourquoi, lors du premier tic-tac, la condition

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

ne fonctionne pas, et les variables a et b restent non initialisées.

Si, après avoir résolu ce problème, la position est toujours ouverte, imprimez les valeurs du tableau pour MA, ask, bid et les variables a et b.

 

Bonjour.

Je suis une vraie idiote, alors ne me donnez pas de coups de pied).

Ma question est la suivante : comment puis-je extraire les données de cotation de Metatrader 5 ?

J'ai converti des devis en fichier Excel et l'ai emmené sur mon lieu de travail, où je n'ai pas d'accès à l'internet, pour travailler avec.

Mais dans 5 metatrader je ne sais pas comment convertir ses fichiers en excel. Pouvez-vous me dire, s'il vous plaît. Il s'avère que j'ai besoin d'une instruction étape par étape ou d'un script (je ne connais pas le langage de programmation, mais je sais comment utiliser des scripts, des conseillers experts ou des indicateurs), qui pourrait être lancé à une période de temps nécessaire, même si elle est non standard (M3 ou M7, par exemple). Je voudrais également vous demander de ne pas me demander de commencer à étudier le langage de programmation, s'il vous plaît.

Je voudrais juste passer définitivement à MT5 pour ne pas avoir à travailler avec deux metatrader.

Vraiment en espérant votre aide, les personnes bien informées, serait reconnaissant à la tombe =).

Salutations, Alexey.

 
Hronoptal:

...

Vous trouverez en partie ici ce dont vous avez besoin : Comment préparer les cotations MetaTrader 5 pour d'autres programmes

Si vous ne voulez pas apprendre, vous pouvez commander ce que vous voulez dans la section Emplois. ))

 

Merci beaucoup, chère tol64, pour le tuyau.

Quant à l'apprentissage, c'est toujours une question de manque de temps, malheureusement.

Merci encore.

Sincèrement, Alexey.

 
Est-il possible que le test des indicateurs visuels affiche 2 ou plusieurs indicateurs au lieu d'un seul ?
 
paladin800:
Est-il possible de faire en sorte que 2 ou plusieurs indicateurs soient affichés pendant le test des indicateurs visuels et pas seulement 1 ?
Sauvegarder le modèle avec le nom de fichier tester.tpl avec tous les indicateurs requis et activer le test en mode visualisation.
Raison: