[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 418

 
sss2019:


Ich danke Ihnen. Die Periode M1 entspricht also dem Wert 1, und die Periode M5 entspricht dem Wert 5. Das bedeutet, dass die Periode H1 dem Wert 60 und die Periode H4 dem Wert 240 entspricht, richtig?


Ja, das ist richtig.

PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц
0 (ноль) 0 Период текущего графика

 

Hallo!

Bitte helfen Sie mir zu verstehen. Ich versuche, einen einfachen Indikator zu schreiben, aber er gibt irgendwie leere Werte aus.

Mir scheint, dass der Fehler irgendwo an dieser Stelle liegt

ExtVolumesBuffer[i]=dVolume;


weil das Feld dieser Operation im ExtVolumesBuffer-Array nichts ändert.

Ich verstehe, dass ich irgendwo einen Fehler gemacht habe, aber ich weiß nicht, wo.

Vielen Dank im Voraus!

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 1
#property indicator_color1 Black
//---- indicator buffers
double ExtVolumesBuffer[];
double emaExtVolumesBuffer[];

//+------------------------------------------------------------------+
int init()
{
//---- indicator buffers mapping
SetIndexBuffer(0,emaExtVolumesBuffer);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
//---- sets default precision format for indicators visualization
IndicatorDigits(0);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("emaVolumes");
SetIndexLabel(0,"emaVolumes");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
if(nCountedBars>0) nCountedBars--;
nLimit=Bars-nCountedBars;
//----
for(i=0; i<nLimit; i++)
{
double dVolume=Volume[i];
ExtVolumesBuffer[i]=dVolume;
emaExtVolumesBuffer[i]=iMAOnArray(ExtVolumesBuffer,0,10,0,MODE_EMA,i);

Print(Volume[i],Volume[i+1],Volume[i+2],Volume[i+3]);
Print(ExtVolumesBuffer[i],ExtVolumesBuffer[i+1],ExtVolumesBuffer[i+2],ExtVolumesBuffer[i+3]);
}
//---- done
return(0);
}
//+------------------------------------------------------------------+
 
sss2019:


Ich danke Ihnen. Die Periode M1 entspricht also dem Wert 1, und die Periode M5 entspricht dem Wert 5. Daraus ergibt sich, dass die Periode H1 dem Wert 60 und die Periode H4 dem Wert 240 entspricht, richtig?

Ich benötige folgende Konstruktion: Wenn die Periode M1 ausgewählt wird, ist dies der Fall 1 und wenn die Periode M15 ausgewählt wird, der Fall 15. Funktioniert das, oder muss man Fall 1, Fall 2 und Fall 3 der Reihe nach durchführen?

int CurrentGrafPeriod ()
{
   
int Ba;
int GrafPeriod = Period();    
  switch(GrafPeriod)
    {
 
    case 1 :  Ba = 60; break;
    case 5 :  Ba = 12; break;
    case 15 : Ba = 4;  break;
    case 30 : Ba = 2;  break;
    case 60 : Ba = 1;  break;
    }
return(Ba);
}

if(CurrentGrafPeriod () == 1){ваше исполнение}
if(CurrentGrafPeriod () == 5){ваше исполнение}
и так далее...
aber das ist eine Theorie - ich weiß nicht, ob sie funktioniert....
 
sss2019:


Ich danke Ihnen. Die Periode M1 entspricht also dem Wert 1, und die Periode M5 entspricht dem Wert 5. Das bedeutet, dass die Periode H1 dem Wert 60 und die Periode H4 dem Wert 240 entspricht, richtig?

Ich möchte, dass diese Konstruktion funktioniert: wenn die Periode M1 auf den Fall 1 gesetzt wird und wenn die Periode M15 auf den Fall 15 gesetzt wird. Funktioniert das so oder muss man Fall 1, Fall 2 und Fall 3 der Reihe nach machen?


Erstens sollten Sie besser benannte Konstanten statt der Zahlen 1, 5 usw. verwenden : PERIOD_M1, PERIOD_M5 usw.

Zweitens gibt es einen Fehler in Ihrem Beispiel. Die Variable Ba hat immer den Wert 1.

 
sss2019:


Ich danke Ihnen. Die Periode M1 entspricht also dem Wert 1, und die Periode M5 entspricht dem Wert 5. Das bedeutet, dass die Periode H1 dem Wert 60 und die Periode H4 dem Wert 240 entspricht, richtig?

Ich möchte, dass diese Konstruktion funktioniert: wenn die Periode M1 auf den Fall 1 gesetzt wird und wenn die Periode M15 auf den Fall 15 gesetzt wird. Funktioniert das, oder muss man Fall 1, Fall 2 und Fall 3 der Reihe nach machen?

1) Es wird funktionieren, wenn Sie in jeder Zeile einen Umbruch einfügen.

2) Anstelle von 1, 5, 15 ist es besser , PERIOD_M1, PERIOD_M5, PERIOD_M15 usw. zu verwenden.

 

Guten Tag, ich bin gerade auf die Tatsache gestoßen, dass der Handelsroboter die Positionen nicht schließt, etwa einmal in 50, wenn er einen Gewinn erreicht. Dann muss er alles schließen, auch die ausstehenden Aufträge, und alles neu einrichten. Das Nicht-Schließen führt zu Verwirrung bei den Aufträgen und zu einem Rückstand.

Können Sie sich vorstellen, dass es manchmal vorkommt, dass ein Auftrag, der definitiv zum Takeprofit geschlossen wurde, einen Ordercloseprice von Null hat !!!!!.

Sehen Sie sich den Screenshot an, hier ist die fünfte Zeile von unten; der Auftrag, der üblicherweise 49 genannt wird, wurde mit TakeProfit geschlossen. Und in der neunten Zeile von unten Bestellabschlusspriche ist gleich Null!!!!!

 
PapaYozh:

Zweitens gibt es einen Fehler in Ihrem Beispiel. Die Variable Ba wird immer den Wert 1 annehmen.

Und warum? Fehlt es an einer Pause?
 
dkfl.zrjdktdbx:

Guten Tag, ich bin gerade auf die Tatsache gestoßen, dass der Handelsroboter die Positionen nicht schließt, etwa einmal in 50, wenn er einen Gewinn erreicht. Dann muss er alles schließen, auch die ausstehenden Aufträge, und alles neu einrichten. Das Nicht-Schließen führt zu Verwirrung bei den Aufträgen und zu einem Rückstand.

Können Sie sich vorstellen, dass es manchmal vorkommt, dass ein Auftrag, der definitiv zum Takeprofit geschlossen wurde, einen Ordercloseprice von Null hat !!!!!.

Wie Sie auf dem Screenshot unten sehen können, handelt es sich um die fünfte Zeile; der Auftrag mit der Bezeichnung 49 wurde bei TakeProfit geschlossen. Und in der neunten Zeile von unten ist Orderclosepriche gleich null!!!!!


Dies ist nicht orderclossepriche - es ist Clowes Preis - Schlusskurs der Bestellung.

Der Code Ihres Expert Advisors muss korrigiert werden. Er ist derjenige, der kämpft.

 

Ich verstehe. Es ist ja nicht so, dass der Code besonders kompliziert wäre... Ich werde es jetzt veröffentlichen.

Wenn ich Aufträge erteile, spare ich die Zeit in wremjapomnim. Sobald eine Bestellung bei currentprofit geschlossen wird, lösche ich alle Bestellungen und erinnere mich wieder an die Zeit in der wremjapomnim pyrimen und setzen sie.

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
 
melnikas:

Hallo!

Bitte helfen Sie mir, dies zu verstehen. Ich versuche, einen einfachen Indikator zu schreiben, aber er gibt irgendwie leere Werte aus.

Mir scheint, dass der Fehler irgendwo an dieser Stelle liegt


weil das Feld dieser Operation im ExtVolumesBuffer-Array nichts ändert.

Ich verstehe, dass ich irgendwo einen Fehler gemacht habe, aber ich weiß nicht, wo.

Vielen Dank im Voraus!


Ist mein Fall so kompliziert?