[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 71

 
DhP:
Die MagicNumber ändert sich in diesem Fall nicht, es sei denn, sie wird durch den EA-Code bereitgestellt.

Ich danke Ihnen allen!
 
Roman.:


Lösung:

Für kaufen (verkaufen - analog):

1) MA-Bruch - MA-Werte der Balken 3, 2 und 1 ermitteln - vergleichen. Wenn die MA-Werte auf den Balken 3>2 und 2<1 sind, handelt es sich um einen Bruch.

2. dann - fraktal - Durchdringung - ein Signal, um ein Geschäft zu machen

Was die Aufzählung von MA betrifft, so sollten Sie diese in externen (optimierbaren) Variablen unterbringen:

Period_MA (Sie können von 2 bis 240 mit Schritt 2), MODE - (Methode der Berechnung von MA - Bereich der Änderungen von 0 bis 3 Schritt 1), PRICE_TYPE - (Preis konstant - Bereich der Änderungen von 0 bis 6 Schritt 1), hörte ich, dass bei der Arbeit innerhalb des Tages MA zählen auf die durchschnittlichen Werte (Schlusskurs ist nicht wichtig), wenn die Arbeit an den Tag Kerzen MA zählen auf die Schlusskurse der Tage.

PERIOD - Sie ändern ihn manuell bei jeder nachfolgenden Optimierung - 1,5,15,30,60,240...

Drücken Sie F1 auf der iMA - lesen Sie dort noch einmal alles sorgfältig durch.

Und natürlich optimieren Sie wie gewohnt TP und Stop Loss.

P.S. Vergessen Sie nicht, eine Information über die Ergebnisse der Tests zu schreiben... :-)))

Die Testergebnisse für TF=1 min ergaben keine profitablen Varianten, auch wenn wir den EA einmal am Tag optimieren.
 
DhP:
Wenn eine Position teilweise geschlossen ist, können Sie die Magie ändern. Ich bin sicher, dass Sie das leicht schreiben können.

Wahrscheinlich haben Sie Kenntnisse, die der mql-Gemeinde nicht zur Verfügung stehen, oder Sie verstehen die Frage einfach nicht, oder Sie sind naiv und glauben, dass die OrderClose-Funktion die Magie verändert.

 
gince:

Ich verstehe, dass ich keine anfängliche flag[i+1] -Einstellung habe. Wenn ja, wo und wie kann ich das tun?

Wenn ich 1 einstelle, wird der Indikator beim Starten auf die Änderung warten.

Die richtige Vorgehensweise ist die folgende:

if ((flag[i]==1 || flag[i]==0) && условие продажи)
unter der Bedingung, dass das Kennzeichen für nicht initialisierte Werte =0 ist (oder EMPTY_VALUE....)
 
sergeev:

das Richtige zu tun ist folgendes:

Unter der Bedingung, dass das Kennzeichen für nicht initialisierte Werte =0 ist (oder EMPTY_VALUE....)

Ich danke Ihnen allen. Ich habe getan, was ich tun wollte.

 
volshebnik:
Testergebnisse auf TF=1 min ergaben keine profitablen Optionen, selbst wenn Sie den EA einmal täglich optimieren.

Je niedriger die TF, desto höher der Lärm...
 
Roman.:

Je niedriger die TF, desto höher der Lärm...
Ja, aber wenn die Strategie korrekt ist, sollte sie, so scheint es mir, auf jedem TF funktionieren, nur mit anderen Parametern. Das Testergebnis bei TF=5 min ergab ebenfalls keine rentablen Optionen.
 
volshebnik:
Ja, aber wenn die Strategie korrekt ist, sollte sie, so scheint es mir, auf jedem TF funktionieren, nur mit anderen Parametern. Das Ergebnis der Tests auf TF=5 min ergab ebenfalls keine profitablen Optionen.

Die Strategie ist hier richtig. Ich bin jetzt betrunken. Ich mache eine Pause.
[Deleted]  
sergeev:

haben Sie immer noch einen Fehler in Ihrem Code.

Denken Sie daran: Stops und Übernahmen in schwebenden Aufträgen basieren nicht auf dem aktuellen Kurs, sondern auf dem Eröffnungskurs des Auftrags.



Besonderen Dank und Respekt an Sie :)))))

Korrigierte Fehler (jetzt hoffentlich alle :)) ) + zusätzliche Begrenzer. Es ist sehr nützlich für diejenigen, die den Bestellungen eine magische Nummer zuweisen müssen.

Viel Spaß damit!

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

es gibt die richtige Art von Leidenschaft. Ich bin gerade high wie ein Drache. Ich ruhe mich aus.
Dasselbe gilt für TF = 15 Minuten. Ich sehe in dieser Strategie noch keine "Treue", aber das kann sich noch ändern. (Viel Spaß beim Ausruhen))