Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 413

 
first_may:
Es ist nicht klar, was gemeint war?
Bedeutung:Fügen Sie den Code korrekt in das Forum ein
 
Karputov Vladimir:
Ich meinte das Folgende:Fügen Sie den Code korrekt in das Forum ein

Verstehe, ich überprüfe die Position des Tenkan und des Kinjun auf der ersten und zweiten Kerze. Wenn es ein Signal gibt, gebe ich eine Meldung ein. Aber ich möchte, dass es eine einmalige Sache ist. Bitte helfen Sie mir. Hier ist der Code.

 
//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[]; 
double ich2_buffer[]; 
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;



//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   SignalICH=TradeSignal_20();
   
   
   Comment("SignalICH: "+(string)SignalICH);
}



//+------------------------------------------------------------------+
//| Функция                                             |
//+------------------------------------------------------------------+
int TradeSignal_20()
{
   int sig=0;

   if(h_ich==INVALID_HANDLE)
   {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
   }
   else
   {
      if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
   }
   
   //--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;
   
   if (ich1_buffer[1]>ich2_buffer[1])
      if (ich1_buffer[2]<ich2_buffer[2])
         Alert(Symbol()+": покупка");
   
   if (ich1_buffer[1]<ich2_buffer[1])
      if (ich1_buffer[2]>ich2_buffer[2])
         Alert(Symbol()+": продажа");
   
   
   //--- возвращаем торговый сигнал
   return (sig);
}
 
first_may:

Verstehe, ich überprüfe die Position des Tenkan und des Kinjun auf der ersten und zweiten Kerze. Wenn es ein Signal gibt, gebe ich eine Meldung ein. Aber ich möchte, dass es eine einmalige Sache ist. Bitte helfen Sie mir. Hier ist der Code.

Nicht mehr als eine Ausschreibung auf einer Leiste:

//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[];
double ich2_buffer[];
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;
//+------------------------------------------------------------------+
//| Объявим переменную-флаг разрешения/запрета алерта                |
//+------------------------------------------------------------------+
bool bool_alert=false;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevtime=0;
   datetime time_zero[];
   CopyTime(Symbol(),Period(),0,1,time_zero);
   
   if(!bool_alert)
      if(prevtime!=time_zero[0])
         bool_alert=true;
   prevtime=time_zero[0];
   
   SignalICH=TradeSignal_20();

   Comment("SignalICH: "+(string)SignalICH);
  }
//+------------------------------------------------------------------+
//| Функция                                                          |
//+------------------------------------------------------------------+
int TradeSignal_20()
  {
   int sig=0;

   if(h_ich==INVALID_HANDLE)
     {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if(CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if(!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if(!ArraySetAsSeries(ich2_buffer,true)) return(0);
     }

//--- проводим проверку условия и устанавливаем значение для sig
   if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;8

   if(ich1_buffer[1]>ich2_buffer[1])
      if(ich1_buffer[2]<ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": покупка");
            //--- опускаем флаг
            bool_alert=false;
           }

   if(ich1_buffer[1]<ich2_buffer[1])
      if(ich1_buffer[2]>ich2_buffer[2])
         if(bool_alert)
           {
            Alert(Symbol()+": продажа");
            //--- опускаем флаг
            bool_alert=false;
           }

//--- возвращаем торговый сигнал
   return (sig);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

Es gibt nicht mehr als eine Ausschreibung pro Leiste:

Ich danke Ihnen vielmals!!!
 

Hallo zusammen!

Wie kann man einen EA dazu bringen, 1 Signal nach einem Verlustgeschäft zu überspringen? ( sehr gute Z-Strategie )

Erklären Sie in Worten, der Code selbst ist in der Lage zu implementieren.

 
Leanid Aladzyeu:

Hallo zusammen!

Wie kann man einen EA dazu bringen, 1 Signal nach einem Verlustgeschäft zu überspringen? ( sehr gute Z-Strategie )

Erklären Sie in Worten, der Code selbst ist in der Lage zu implementieren.

Bei einem Verlust geben Sie der globalen Variablen des Terminals einen bestimmten Wert und setzen ihn beim ersten Signal auf Null zurück. Die Handelsfunktion überwacht diesen Wert und entscheidet, ob ein neues Geschäft eröffnet werden soll oder nicht.

Mit anderen Worten: Der Arbeitsauftrag sieht in etwa wie folgt aus:

a) Gewinn verfolgen;

b) Signale zählen, bei Verlust das Kästchen ankreuzen, wenn es noch kein anderes Signal zum Handeln gibt, das Kästchen zurücksetzen, wenn das erste Signal nach dem Verlust auftritt;

c) das Kästchen ankreuzen und entscheiden, ob Sie handeln oder warten wollen.

Es ist bequemer, GPT zu verwenden, sie werden gespeichert, wenn das Terminal abstürzt, einfache Variablen im Code können durch jeden Nieser zurückgesetzt werden und der Expert Advisor wird mit Fehlern arbeiten.

 
Vitalie Postolache:

Wenn Sie nicht weiter wissen, weisen Sie der globalen Variablen des Terminals einen bestimmten Wert zu und setzen Sie ihn beim ersten Signal auf Null zurück. Die Handelsfunktion überwacht diesen Wert und entscheidet, ob ein neuer Handel eröffnet werden soll oder nicht.

Das heißt, die Reihenfolge der Arbeiten ist ungefähr die folgende:

a) Gewinn verfolgen;

b) Signale zählen, bei einem Verlust das Kästchen ankreuzen, wenn wir noch kein weiteres Signal zum Handeln hatten, das Kästchen zurücksetzen, wenn das erste Signal nach einem Verlust eintrifft;

c) das Kästchen ankreuzen und entscheiden, ob Sie handeln oder warten wollen.

GPT ist bequemer zu bedienen, sie werden gespeichert, wenn das Terminal abstürzt, einfache Variablen im Code können durch jeden Nieser zurückgesetzt werden und der Expert Advisor wird mit Fehlern arbeiten.

Alle haben verstanden, bis auf einen. Wie macht man einen Signalzähler?
Und?
if("Bedingung" == тру)
i ++;
 
Leanid Aladzyeu:
Ich habe alles bis auf eines. Wie macht man einen Signalzähler?
Oder?
if("Bedingung"==true)
i ++;
Etwa so:Statische Variablen.
 

spuckt

sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS));

möglicher Datenverlust aufgrund von Typkonvertierung .mq4 1697 29

Typ Doble bei SL.


Grund der Beschwerde: