Roger: In dieser Minute wird der Expert Advisor bis zu vierzig Aufträge öffnen.
Und wenn sich die erste nicht öffnen lässt? Eine Stunde lang auf das nächste Signal warten? Das ist in Ordnung:
Es gibt ein Signal --> Prüfen Sie, ob ein Auftrag/Position auf diese Kerze gesetzt/geöffnet ist, gibt es keinen --> gesetzt/geöffnet, gibt es einen --> dann gibt es keinen weiteren Bedarf.
Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)
#property indicator_separate_window#property indicator_minimum 0#property indicator_maximum 1#property indicator_buffers 3#property indicator_color1 DarkGreen#property indicator_color2 Crimson#property indicator_color3 Yellow//---- indicator parameters externint RSI=8;
externint valeur1=55;
externint valeur2=45;
//---- indicator buffersdouble ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settings
SetIndexStyle (0,DRAW_HISTOGRAM, EMPTY,4,DarkGreen);
SetIndexBuffer(0,ExtBuffer1);
SetIndexStyle (1,DRAW_HISTOGRAM, EMPTY,4,Crimson);
SetIndexBuffer(1,ExtBuffer2);
SetIndexStyle (2,DRAW_HISTOGRAM, EMPTY,4,Yellow);
SetIndexBuffer(2,ExtBuffer3);
//---- names
IndicatorShortName("RSI above/under 45/55");
SetIndexLabel(0,"RSI"+RSI +" is above 55");
SetIndexLabel(1,"RSI"+RSI +" is under 45");
SetIndexLabel(2,"RSI is in the mid zone ");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Moving Averages |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1st bufferfor(int i=0; i<limit; i++)
if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2)
{
ExtBuffer2[i]=1;
}
elseif (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
{
ExtBuffer1[i]=1;
}
else
ExtBuffer3[i]=1;
return(0);
}
Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)
int col;
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1st bufferfor(int i=0; i<limit; i++)
if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2)
{
ExtBuffer2[i]=1;if(i=1)col =1;return;
}
elseif (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
{
ExtBuffer1[i]=1;if(i=1)col =3;return;
}
else
{
ExtBuffer3[i]=1;
if(i=1)col =2;
}
return(0);
}
so - wenn die Farben mit den Zahlen nicht verwechselt werden
Hallo zusammen... Könnt ihr mir sagen, was das bedeutet?
int start() ...
zurück(0);
Alles ist rein auf meine Vermutung und nur vermutlich:
int start() {
Comment(Info()); // Вывод какой-то информации на экранint KOL_BUY = order_total(0); // Подсчёт количества Buy-позицийint KOL_SELL = order_total(1); // Подсчёт количества Sell-позицийdouble l;
if (order_total()==0) { // Если количество ордеров равно нулю
open(0,Lot,0,TP); // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
open(1,Lot,0,TP); // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
}
if (KOL_BUY==0 && KOL_SELL!=0) { // Если нет Buy и есть Sell
open(0,Lot,0,TP); // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
l=last_trade(1); // Берём лот прошлой Sell
open(1,l,0,0); // Открываем Sell лотом прошлой Sell скорее всего без стопа и тейка
modify_orders(1); // Что-то модифицируем в Sell (в какой и что - не понятно)
}
if (KOL_BUY!=0 && KOL_SELL==0) { // Если нет Sell и есть Buy
open(1,Lot,0,TP); // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
l=last_trade(0); // Берём лот прошлой Buy
open(0,l,0,0); // Открываем Buy лотом прошлой Buy скорее всего без стопа и тейка
modify_orders(0); // Что-то модифицируем в Buy (в какой и что - не понятно)
}
return(0); // Выход из start()
}
In dieser Minute wird der Expert Advisor bis zu vierzig Aufträge öffnen.
Und wenn sich die erste nicht öffnen lässt? Eine Stunde lang auf das nächste Signal warten? Das ist in Ordnung:
Es gibt ein Signal --> Prüfen Sie, ob ein Auftrag/Position auf diese Kerze gesetzt/geöffnet ist, gibt es keinen --> gesetzt/geöffnet, gibt es einen --> dann gibt es keinen weiteren Bedarf.
Auf diese Weise kann entweder die Anzahl der Aufträge oder nur der erste Aufruf der Funktion kontrolliert werden...
Es gibt also mehr als eine Zeile wie die Ihre.
extern int SecondsAfterTheBar = 0; int start(){ ... if(NewBar() == TRUE){ ... } return(0); } bool NewBar(){ RefreshRates(); static bool initial = FALSE; static datetime stat_dtime = 0; if ((TimeCurrent() - stat_dtime >= Time[0] - Time[1] + SecondsAfterTheBar) == TRUE){ stat_dtime = Time[0]; if (initial == TRUE){ return(TRUE); }else{ initial = TRUE; } } return(FALSE); }Wahrscheinlich bin ich zu spät dran, aber meine Lösung kann trotzdem jeder verwenden:
Offensichtlich bin ich zu spät dran, aber vielleicht ist meine Lösung trotzdem für jemanden nützlich:
Ich danke Ihnen. Allgemeiner, wenn
bool NewBar( datetime SecondsAfterTheBar = 0 )
Dann können Sie die Verzögerung in Sekunden angeben, wenn Sie sie aufrufen.
Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)
diese Farbe:
Vielen Dank für die Antwort.
Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)
Ist dies eine Bedingung für die Eröffnung von Aufträgen??? Verstehe ich das richtig?
Ist dies eine Bedingung für die Eröffnung von Aufträgen??? Verstehe ich das richtig?
Diese Bedingung gilt für alles, was Sie brauchen, denn wir können nur anhand der Namen erraten, was diese benutzerdefinierten Funktionen tun
Hallo zusammen... Könnt ihr mir sagen, was das bedeutet?
int start()
...
zurück(0);
Alles ist rein auf meine Vermutung und nur vermutlich: