Comment j'ai assemblé mon conseiller par essais et erreurs - page 47

 

Pourtant, il y a une différence dans le code, le signal de l'indicateur est différent.

Si c'est le cas, moins d'indicateurs sont appropriés

//---
   double BuyBuffer[];
   double SellBuffer[];
   ArraySetAsSeries(BuyBuffer,true);
   ArraySetAsSeries(SellBuffer,true);
   if(!iGetArray(handle_iCustom,1,0,2,BuyBuffer) || !iGetArray(handle_iCustom,0,0,2,SellBuffer))
     {
      ExtPrevBarsY=0;
      return(false);
     }
//---
   if(BuyBuffer[1]!=0.0)
     {

C'est mieux.

//---
   double main[],signal[];
   ArraySetAsSeries(main,true);
   ArraySetAsSeries(signal,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,MAIN_LINE,start_pos,count,main) ||
      !iGetArray(handle_iCustom,SIGNAL_LINE,start_pos,count,signal))
     {
      ExtPrevBarsY=0;
      return(false);
     }

   if(main[1]>signal[1])
     {

Je l'ai changé pour celui-ci ! Je vérifie toujours la disponibilité du conseiller expert, tout semble fonctionner.

il fonctionne bien avec un indicateur de ce type (le fichier ci-dessous)

Dossiers :
2.mq5  17 kb
 

Pour éviter toute confusion avec l'ouverture et la fermeture des positions, il est préférable de placer toutes les lignes et l'indicateur dans la bonne direction, et de ne pas utiliser la marche arrière.

sinon, on peut s'embrouiller - d'autant plus qu'il y a une option dans les paramètres (l'inversion s'applique à toutes les lignes et à l'indicateur)

input string   t3="----- Indicators:        -----";              //
input string   short_name                   = "Examples\\MACD";  // Name Indicators
input bool     InpIndicators                = false;             // Indicators: Start (true)
input bool     InpCloseOpposite             = false;             // Close opposite
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_buy;          // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = open_sell;         // Trade command: (SellBuffer Indicators)
input string   t4="----- Revers Buy><Sell   -----";              //
input bool     ObjRevers                    = false;             //  Revers

vous pouvez simplement supprimerl'entrée dans le code lui-même
comme ceci

string   t4="----- Revers Buy><Sell   -----";              //
bool     ObjRevers                    = false;             //  Revers
 
Alexsandr San:

Pour éviter toute confusion avec l'ouverture et la fermeture des positions, il est préférable de placer toutes les lignes et l'indicateur dans la bonne direction, et de ne pas utiliser la marche arrière.

sinon, on peut s'embrouiller - d'autant plus qu'il y a une option dans les paramètres (l'inversion s'applique à toutes les lignes et à l'indicateur)

vous pouvez simplement supprimerl'entrée dans le code lui-même
comme ceci

non ! l'indicateur doit être inversé

 

J'essaie d'obtenir de nouvelles fonctionnalités de l'Indicateur, et j'essaie de tout faire.

input string   t3="----- Indicators: SELL   -----";              //
input string   short_name                   = "2";               // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t4="----- Indicators: BUY    -----";              //
input string   short_name1                  = "2";               // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)

Je peux fantasmer avec un indicateur ou deux.

vous avez juste besoin de ramasser, Indicateur - comme ceci (photo)

https://www.mql5.com/ru/code/392

Photo par

J'ai créé un indicateur appelé ( 2 )

Dossiers :
2.mq5  17 kb
 
Alexsandr San:

J'essaie d'obtenir de nouvelles fonctionnalités de l'Indicateur, et j'essaie de tout faire.

Je peux fantasmer avec un indicateur ou deux.

Vous devez juste choisir, Indicateur - comme ceci (photo)

https://www.mql5.com/ru/code/392

J'ai triché sur l'indicateur qui s'appelle (2).

Je vérifie le fonctionnement pendant 1 minute - il fonctionne bien.

Instantané2

 
Alexsandr San:

Vérification du fonctionnement pendant 1 minute - fonctionne bien


expertWWWW_Trailing_Line.mq596 kb fonctionne bien, sans erreur.

seulement, besoin d'ajouter un panneau pour l'information et pour le test, dans le testeur dans la version manuelle

panneau

 
Alexsandr San:

expert fonctionne bienWWWW_Trailing_Line.mq596 kb, aucune erreur.

Seulement, vous devez ajouter un panneau pour l'information et pour le test, dans le testeur dans la version manuelle.

J'ai ajouté un panneau - maintenant vous pouvez faire des tests manuels dans le testeur.

Command_Trailing Line

quels sont ses paramètres

//+------------------------------------------------------------------+
input string   t="-----  Parameters         -----";              //
input string   Template                     = "ADX";             // Имя шаблона(without '.tpl')
input double   TargetProfit                 = 999999.99;         // Цель Баланса(Ваш Баланс + сумма)
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input int      InpTakeProfit                = 50;                // Take Profit ("0"-No. 5<100)
input string   t0="----- Trailing Line      -----";              //
input string   InpObjUpName                 = "TOP";             // Obj: TOP (Horizontal Line)
input ENUM_TRADE_COMMAND InpTradeCommand    = close_sells;       // Obj:  command:
input string   InpObjDownName               = "LOWER";           // Obj: LOWER (Horizontal Line)
input ENUM_TRADE_COMMAND InTradeCommand     = close_buys;        // Obj:  command:
input ushort   InpObjTrailingStop           = 30;                // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStep           = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t1="----- Line name: 1       -----";              //
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;          // Trade command:
input string   t2="----- Line name: 2       -----";              //
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string   t3="----- Indicators: SELL   -----";              //
input string   short_name                   = "2";               // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t4="----- Indicators: BUY    -----";              //
input string   short_name1                  = "2";               // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)
input string   t5="----- Button:            -----";              //
input ENUM_TRADE_COMMAND InpTradeCommandBut = open_buy;          // Obj(BUY):  command:Button: BUY
input ENUM_TRADE_COMMAND InTradeCommandBut  = open_sell;         // Obj(SELL):  command:Button: SELL
input int      TrailingStop_STOP_LEVEL      = 36;                // Button: Trailing Stop LEVEL
Dossiers :
 
Alexsandr San:

ajouté un panneau - maintenant vous pouvez toujours dans le testeur, mettre la main dessus.

quels sont les paramètres de l'appareil

Merde ! j'ai raté l'insertion dans OnDeinit

lorsque vous retirez le conseiller expert du graphique - le panneau n'est pas retiré sans lui

le code est ouvert, vous pouvez le copier et le coller vous-même

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(_name); i++)
     {
      ObjectDelete(0,Symbol()+_name[i]);
     };
   EventKillTimer();
//---
   Print(TimeCurrent(),": ",__FUNCTION__," reason code = ",reason);
   Comment("");
  }
//+------------------------------------------------------------------+
 
Alexsandr San:

ajouté un panneau - maintenant vous pouvez toujours dans le testeur, mettre la main dessus.

quels sont ses paramètres.

J'ai besoin d'ajouter une fonction supplémentaire.

Par exemple, un signal de VENTE est déclenché, non pas pour ouvrir une position, mais pour tracer une ligne horizontale de N points en arrière et lorsque le prix revient en arrière et à partir de cette ligne, pour ouvrir une position.

EURUSDH1

 
Alexsandr San:

nous devons ajouter une autre fonction.

Par exemple - un signal de VENTE est déclenché, non pas pour ouvrir une position, mais pour tracer une ligne horizontale de N points en arrière et lorsque le prix recule et à partir de cette ligne - pour ouvrir une position.


J'ai essayé de le faire sans m'embrouiller, si quelqu'un est intéressé, essayons de trouver une solution ensemble.

Photo par

Instantané2