[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 161

 
chief2000 >> :

In dem von mir eingestellten Indikator (um sie dann mit Time[i] zu vergleichen):


Dann in der Schleife


Infolgedessen ergeben StrToTime(StartRange) und StrToTime(EndRange) Nullen .

- Warum und wie kann ich das beheben?



Und wie schaffen Sie es, eine Datetime-Variable in die Funktion StrToTime zu setzen? Da sollte eine Schnur drin sein!

Oder glauben Sie, dass das Auftragsformular D'1970.12.24' eine Zeichenkette ist? Sie irren sich.

Vielleicht brauchen Sie TimeToStr?

 


Dies führt dazu , dassStrToTime(StartRange) und StrToTime(EndRange) Nullen ergeben .

- Warum und wie kann dies behoben werden?



//функция 

bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}

//+-------------------------------------------------------------------
вставить в глоб. переменные
//extern string TimeBegin = "00:00";
//extern string TimeEnd = "00:00";

а это уже в код - проверка 
/*
isTradeTimeString(); //торговля по времени
   if ( isTradeTimeString( TimeBegin, TimeEnd))
     {
       //торгуем
     }
*/
 

Offensichtlich war es mein Fehler (falsch interpretiertes Beispiel

aus der Dokumentation). Es stellte sich heraus, dass es möglich ist, die Variable "datetime" direkt mit Time[i] zu vergleichen.

Vielen Dank für die Hilfe!

 
...... hat eine Funktion... oder ein Stück Code... Ich kann es heute nicht selbst machen (gestern war das Wasser im Topf ausgegangen), aber ich brauche es dringend!
 
Ich sage dir, mein Kopf funktioniert nicht )))) Ich werde den Code aus dem Schleppnetz holen)))
 

//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Blue

#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;

//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];
double EMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);
SetIndexBuffer(2,EMABuffer);

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
for(i=0; i<limit; i++)
EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA,0,MODE_SMA,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+

Wie mache ich eine MA mit einem negativen Offset zum Beispiel -5 Bars, wenn ich es auf -5 es zeichnet einige Bullshit?

 
evgenio >> :

как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??

Warum Blödsinn? Gibt es etwas, das Sie nicht sehen wollen? Oder übersehe ich etwas !!!!

ׂ

Oben ist Ihre Variante, unten ist die Variante mit einer Verschiebung von -5 ! nur um -5 Takte verschoben, was ist falsch oder falsch????????

 
Infinity >> :

Warum Blödsinn? Gibt es etwas, das Sie nicht sehen wollen? Oder übersehe ich etwas !!!!

Oben ist Ihre Variante, unten ist die Variante mit einer Verschiebung von -5 ! nur um -5 Takte verschoben, was ist falsch oder falsch????????

Nun, das stimmt, aber wenn ich versuche, den EA aufzurufen.

//+------------------------------------------------------------------+
//| fgfgfgfgfgf.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"

extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---переменные----------
double k,k1,k2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5);
k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5);
k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5);
if (OrdersTotal()<=2)
{
if (k>0 && k2>k1+0.0005)
ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point);
ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242);
ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow);
}
return(0);
}
//+------------------------------------------------------------------+

es funktioniert nicht.

Das tue ich

1. einen Test für einen bestimmten Zeitraum durchführen

2. ich bringe einen Indikator an

3 Ich erhalte etwas Seltsames.


 

Wie kann ich die

Ich möchte, dass mein EA nur einmal am Tag eine Order eröffnet.

Wenn sie einen Auftrag eröffnet, dann schließt sie ihn und schaltet sich bis zum nächsten Tag aus.

Ich schätze, ich muss das letzte Geschäft aus der Historie holen... es mit dem Datum vergleichen und wenn die Bestellung an diesem Tag bereits abgeschlossen wurde, dann den EA deaktivieren...

Denken Sie in die richtige Richtung?

Ich kann es nicht ganz verstehen. Ich bin neu in MQL.

 

Guten Tag, liebe Kollegen.

Bitte beraten Sie mich, wie ich die Wendepunkte in der Software, d.h. dem Experten, erklären kann, d.h. der Experte muss zwischen zwei Möglichkeiten der МА-Position unterscheiden: МА steigend, МА fallend.