Fragen von einem "Dummy" - Seite 239

 
forward666:

Danke, wenn Sie mir irgendwelche Tipps geben können, wäre das toll!

Ich werde mehr über den Stylizer lesen.

Versuchen Sie es stattdessen:

bool first;

schreiben:

bool first=true;
 
Sehr geehrte Damen und Herren! Bitte beraten Sie "Dummies", wie (oder besser gesagt, wo) man einen kostenlosen Expert Advisor vom Markt herunterladen kann? Ich weiß, wo ich Standard-Expert Advisors installieren kann... Ich kann es nicht vom Market aus tun - welche Anwendung sollte ich verwenden?
 
Sokrat:

Sehr geehrte Damen und Herren! Bitte beraten Sie "Dummies", wie (oder besser gesagt wo) man einen kostenlosen Expert Advisor vom Markt herunterladen kann? Ich weiß, wo ich einen gewöhnlichen EA installieren kann... Ich kann es nicht über den Market tun - welche Anwendung sollte ich verwenden?
Der einfachste Weg, dies vom Terminal aus zu tun, ist die Registerkarte Markt in der Toolbox
 
Sokrat:

Sehr geehrte Damen und Herren! Bitte beraten Sie "Dummies", wie (oder besser gesagt, wo) man einen kostenlosen Expert Advisor vom Markt herunterladen kann? Ich weiß, wo ich Standard-Expert Advisors installieren kann... Ich kann es nicht vom Market aus tun - welche Anwendung sollte ich verwenden?



 

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

Sie haben vor dem ersten Ticken: first==false, und die Variablen a und b sind nicht initialisiert. Aus diesem Grund wird beim ersten Ticken die Bedingung

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

funktioniert nicht, und die Variablen a und b bleiben uninitialisiert.

Wenn nach Behebung dieses Problems die Position immer noch offen ist, drucken Sie die Array-Werte für MA, Ask, Bid und die Variablen a und b aus.

 

Hallo.

Ich bin ein echter Dummkopf, also treten Sie mich nicht).

Meine Frage ist: Wie kann ich Kursdaten aus Metatrader 5 extrahieren?

Ich habe die Angebote in eine Excel-Datei umgewandelt und sie an meinen Arbeitsplatz mitgenommen, wo ich keinen Internetzugang habe, und damit gearbeitet.

Aber in 5 metatrader Ich weiß nicht, wie man seine Dateien in Excel zu konvertieren. Können Sie mir das bitte sagen? Es stellt sich heraus, dass ich eine Schritt-für-Schritt-Anleitung oder ein Skript benötige (ich kenne die Programmiersprache nicht, aber ich weiß, wie man Skripte, Expert Advisors oder Indikatoren verwendet), die zu einem gewünschten Zeitrahmen gestartet werden können, auch wenn es nicht der Standard ist (M3 oder M7, zum Beispiel). Ich möchte Sie auch bitten, mich nicht zu bitten, mit dem Studium der Programmiersprache zu beginnen.

Ich würde nur gerne dauerhaft auf MT5 umsteigen, damit ich nicht mit zwei Metatradern arbeiten muss.

Wirklich in der Hoffnung auf Ihre Hilfe, sachkundige Menschen, wäre dankbar, das Grab =).

Mit freundlichen Grüßen, Alexey.

 
Hronoptal:

...

Teilweise finden Sie hier, was Sie brauchen: Wie man MetaTrader 5-Kurse für andere Programme vorbereitet

Wenn Sie nicht lernen wollen, können Sie in der Rubrik Jobs bestellen, was Sie wollen. ))

 

Vielen Dank, liebe tol64, für den Hinweis.

Was das Lernen angeht, so ist es leider immer noch eine Frage der fehlenden Zeit.

Nochmals vielen Dank.

Mit freundlichen Grüßen, Alexey.

 
Ist es möglich, dass der visuelle Indikatortest 2 oder mehr Indikatoren anstelle von nur einem anzeigt?
 
paladin800:
Ist es möglich, dass während des Tests der visuellen Indikatoren 2 oder mehr Indikatoren angezeigt werden und nicht nur 1?
Speichern Sie die Vorlage unter dem Dateinamen tester.tpl mit allen erforderlichen Indikatoren und aktivieren Sie den Test im Visualisierungsmodus.
Grund der Beschwerde: