Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 569

 
YanSay:

Können Sie mir sagen, wie ich ein bestimmtes Datum im EA ausschließen/hinzufügen kann?

Zum Beispiel, nicht am 2. März 2018 zu handeln. Ich habe verschiedene Optionen ausprobiert und bin mit den Daten durcheinander gekommen.

Die einfachste Möglichkeit ist diese:

input datetime i_dtSkipTheDay = D'2018.03.02';


...
datetime dtDayStartTime = TimeCurrent() / (60 * 60 * 24); 
if (dtDayStartTime == i_dtSkipTheDay)
{
   // не торговать
}
 

Ich habe einen EA geschrieben, der gut handelt. Ich beschloss, es zu ergänzen und vorschreiben, Schließung Aufträge durch entgegengesetzte Signale ... aber es reagiert nicht .... es öffnet überhaupt nicht oder öffnet, aber nicht schließen durch entgegengesetzte Signale.... nur durch TP und SL

 if (CCILong < Level0 && CountBuy() == 0)
       {   for(int i=OrdersTotal()-1; i >=0; i--)
          {
             if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
             {
                if(OrderMagicNumber() == Magic && OrderType() == OP_BUY)
                  bool close1 = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clrNONE);
             }
          }
       }   
          if (CCILong > Level0 && CountSell() == 0)
       {   for(int i=OrdersTotal()-1; i >=0; i--)
          {
             if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
             {
                if(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                  bool close1 = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrNONE);
             }
          }
       }
 
baksik99:

Ich habe einen EA geschrieben, der gut handelt. Ich beschloss, es zu ergänzen und vorschreiben, Schließung Aufträge durch entgegengesetzte Signale ... aber es reagiert nicht .... es öffnet überhaupt nicht oder öffnet, aber nicht schließen durch entgegengesetzte Signale.... nur durch TP und SL

Sie haben geschrieben:

if (CCILong < Level0 && CountBuy() == 0)

Wenn es keine Kaufaufträge gibt, sollten wir den Kauf schließen. Das Gleiche gilt für Verkaufen.

 
Ihor Herasko:

Sie haben es geschrieben:

Wenn es keine Kaufaufträge gibt, müssen Sie den Kauf schließen. Das Gleiche gilt für Verkaufen.

Sollen sie vonCountSell undCountBuy entfernt werden?

Es hat funktioniert .... Ich habe es geschafft! Danke!!! ++++
 
Ihor Herasko:

Die einfachste Möglichkeit ist diese:

Leider hat es nicht funktioniert(

Alles, wie Sie es getan haben, nur nicht gleich:

input datetime i_dtSkipTheDay = D'2018.03.02';

datetime dtDayStartTime = TimeCurrent() / (60 * 60 * 24);
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

Noch im Tester öffnet das Geschäft an diesem Tag.

 
YanSay:

Leider hat es nicht funktioniert(.

Ich habe alles so gemacht, wie du es gemacht hast, nur nicht gleich:

Noch im Tester öffnet das Geschäft an diesem Tag.

Und weiter?

input datetime i_dtSkipTheDay = D'2018.03.02';

if (TimeToStr(TimeCurrent(),TIME_DATE) != TimeToStr(i_dtSkipTheDay,TIME_DATE))
{
//Открытие ордера
}
 
Taras Slobodyanik:

Wie wäre es damit?

So hat es funktioniert! Herzlichen Dank!

 
YanSay:

Leider hat es nicht funktioniert(.

Ich habe alles so gemacht, wie du es gemacht hast, nur nicht gleich:

Trotzdem wird an diesem Tag ein Handel mit dem Testgerät eröffnet.

Tut mir leid, es muss dort hinten multipliziert werden:

input datetime i_dtSkipTheDay = D'2018.03.02';

datetime dtDayStartTime = (TimeCurrent() / (60 * 60 * 24)) * (60 * 60 * 24);
if (dtDayStartTime != i_dtSkipTheDay)
{
//Открытие ордера
}

Deshalb hat es nicht geklappt.

 
Ihor Herasko:

Es tut mir leid, es muss dort hinten multipliziert werden:

Deshalb hat es nicht geklappt.

Ich danke Ihnen!

 

Ich versuche, meinen eigenen Fraktal-Indikator zu erstellen, indem ich den Standard-Indikator verwende. Er scheint zu funktionieren, aber er setzt die Fraktale manchmal an die falschen Stellen, kann jemand helfen?

//+------------------------------------------------------------------+
//|                                                     Fractals.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  Gray
#property indicator_color2  Gray
#property indicator_label1  "Fractal Up"
#property indicator_label2  "Fractal Down"
bool high_f, low_f;
//---- input data
input int period = 5;
int per = period;
//---- indicator buffers
double ExtUpperBuffer[];
double ExtLowerBuffer[];
//--- 10 pixels upper from high price
int    ExtArrowShift=-10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
  if(per % 2 == 0) per++;
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtUpperBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,217);
   PlotIndexSetInteger(1,PLOT_ARROW,218);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,ExtArrowShift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-ExtArrowShift);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;
//---
   if(rates_total<per)
      return(0);
//---
   if(prev_calculated<per+(per-1)/2)
     {
      limit=(per-1)/2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-per;

   for(i=limit;i<rates_total-(per+1)/2 && !IsStopped();i++)
     {
      
      for(int g = 1; g < (per+1)/2; g++){
         high_f = true; low_f = true;
         
         //---- Upper Fractal
         if(high[i-g] > high[i] || high[i+g] > high[i]){
            ExtUpperBuffer[i] = EMPTY_VALUE;
            high_f = false;  
            
         }else{            
            if(high_f) ExtUpperBuffer[i] = high[i];  
         }
         //---- Lower Fractal
         if(low[i-g] < low[i] || low[i+g] < low[i]){           
            ExtLowerBuffer[i] = EMPTY_VALUE;
            low_f = false;   
         }else{            
            if(low_f) ExtLowerBuffer[i] = low[i];     
         }
      
      }
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+