[Archiv!] Ich schreibe jeden Experten oder Indikator kostenlos. - Seite 60

 

Hallo! Bitte helfen Sie mir, einen Indikator zu schreiben.

Auf dem Kursdiagramm sind zwei gleitende Durchschnitte eingezeichnet. Visuelle Pfeile und Warnhinweise zeigen den Zeitpunkt der Überquerung an. Dies ist in dem Indikator Ma_crossover_signal_with _waw implementiert.

Wir müssen diesen Indikator ändern:

1. Wenn Sie die Formeln zur Berechnung des gleitenden Durchschnitts kennen, zeigen Sie im Arbeitsbereich den Schlusskurs der aktuellen (noch im Aufbau befindlichen) Kerze an, bei der der entgegengesetzte gleitende Durchschnitt gekreuzt wird.

2. Anzeige des Schlussprozentsatzes der aktuellen Kerze auf der Arbeitsfläche. Zum Beispiel, wie im BarTimer Final Indikator (Option BarTimer) implementiert.

Einstellbare Parameter für den Indikator: Berechnungsmethode des gleitenden Durchschnitts (SMA, EMA...), Zeitraum des gleitenden Durchschnitts. Und wenn möglich, der Zeitrahmen: Wert 0 gilt für den aktuellen Zeitrahmen, Werte 5, 15, 30, 60... - gilt für M5, M15, M30, H1...

Ich danke Ihnen.

 
matyushevskaya:

Hallo! Bitte helfen Sie mir, einen Indikator zu schreiben.

Auf dem Kursdiagramm sind zwei gleitende Durchschnitte eingezeichnet. Visuelle Pfeile und Warnhinweise zeigen den Zeitpunkt der Überquerung an. Dies ist in dem Indikator Ma_crossover_signal_with _waw implementiert.

Wir müssen diesen Indikator ändern:

1. Wenn Sie die Formeln zur Berechnung des gleitenden Durchschnitts kennen, zeigen Sie im Arbeitsbereich den Schlusskurs der aktuellen (noch im Aufbau befindlichen) Kerze an, bei der der entgegengesetzte gleitende Durchschnitt gekreuzt wird.

2. Anzeige des Schlussprozentsatzes der aktuellen Kerze auf der Arbeitsfläche. Zum Beispiel, wie im BarTimer Final Indikator (Option BarTimer) implementiert.

Einstellbare Parameter für den Indikator: Berechnungsmethode des gleitenden Durchschnitts (SMA, EMA...), Zeitraum des gleitenden Durchschnitts. Und wenn möglich, der Zeitrahmen: Wert 0 gilt für den aktuellen Zeitrahmen, Werte 5, 15, 30, 60... - gilt für M5, M15, M30, H1...

Ich danke Ihnen.


Warum etwas mit einem Indikator tun, der in die Zukunft blickt?
 
Hallo zusammen, bitte helfen Sie mir, einen einfachen Expert Advisor auf Basis des gleitenden Durchschnitts zu schreiben. Das Eröffnungssignal: Wenn der MA eine Kerze kreuzt, warten Sie darauf, dass der Kerzenkörper den MA verlässt, und warten Sie auf den Abschluss des Balkens. Wenn die Kerze über dem MA geschlossen hat, kaufen Sie, wenn sie darunter liegt, verkaufen Sie. Einstellung MA SMA20
 
arkeo:
Hallo zusammen, bitte helfen Sie mir, einen einfachen Expert Advisor auf Basis des gleitenden Durchschnitts zu schreiben. Das Eröffnungssignal: Wenn der MA eine Kerze kreuzt, warten Sie darauf, dass der Kerzenkörper den MA verlässt, und warten Sie auf den Abschluss des Balkens. Wenn die Kerze über dem MA geschlossen hat, kaufen Sie, wenn sie darunter liegt, verkaufen Sie. Einstellung MA SMA20


Sie können einen dieser Parameter in allen EAs haben, aber Sie müssen den Shift-Parameter nach Belieben anpassen. Das glaube ich nicht, denn nicht alle Kerzenkörper sind dort. Zu faul, solchen Unsinn zu schreiben ))))

 
ZZZEROXXX:


Sie sollten den Verschiebungsparameter nur so einstellen, wie Sie ihn benötigen. Das glaube ich nicht. Zu faul, um solchen Unsinn zu schreiben ))

Es dauert nur fünf Minuten. Ich schicke Ihnen den günstigen Kopierer, den ich für 240 Dollar gekauft habe.

 
arkeo:
Warten auf den Kopierer...
Dateien:
 
Dima_S.:
Warten auf den Kopierer...
schauen Sie in den Briefkasten.
 

Hallo zusammen.

Ich versuche, einen Bericht wie diesen zu erstellen:

Aber ich kann den Kontostand zum Zeitpunkt der Positionseröffnung nicht in den Bericht aufnehmen. Im Moment sieht der Code wie folgt aus:

if(Trade_Report == TRUE)
{ int pos, handle;

double Swap_M, Profit_M, Swap_P, Profit_P, Commission;
double Source_LP[RA], Source_SP[RA], Acc_Bal_Close[RA], Acc_Bal_Open[RA];

handle = FileOpen("OrdersReport.csv",FILE_CSV|FILE_WRITE);

if(handle > 0)
{
FileWrite(handle,"Time Open"+","+"Time Close"+","+"Lots"+","
+"Balance Open"+","+"Balance Close"+","+"Profit($)"+","+"Profit(p)"+","
+"SOURCE_LP"+","+"SOURCE_SP");

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
{ OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY); //2

Swap_M = OrderSwap();
Profit_M = OrderProfit();
Commission = OrderCommission();
Swap_P = (OrderSwap()/10)/OrderLots();
Profit_P = (OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots();

if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_Source_LP && OrderCloseTime() == TimeCurrent())
{ Source_LP[pos] = Profit_M+Swap_M+Commission;
Acc_Bal_Close[pos] = AccountBalance(); }

if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP && OrderCloseTime() == TimeCurrent())
{ Source_SP[pos] = Profit_M+Swap_M+Commission;
Acc_Bal_Close[pos] = AccountBalance(); }
//---------------------------------------------------------------------------------------------------------------------
if(OrderType() < 2)
{ FileWrite(handle,TimeToStr(OrderOpenTime(),TIME_DA TE|TIME_MINUTES)+","
+TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES )+","
+DoubleToStr(OrderLots(),2)+","
+DoubleToStr(Acc_Bal_Open[pos],2)+","
+DoubleToStr(Acc_Bal_Close[pos],2)+","
+DoubleToStr(Profit_M+Swap_M+Commission,2)+","
+DoubleToStr(Profit_P+Swap_P+Commission,2)+","
+DoubleToStr(Source_LP[pos],2)+","
+DoubleToStr(Source_SP[pos],2)); }
}
FileClose(handle); //2

Könnte mir bitte jemand sagen, wie ich die Saldenwerte zum Zeitpunkt der Eröffnung eines Geschäfts in den Bericht einfügen kann?

 
tol64:

Kann mir jemand sagen, wie ich die Saldenwerte zum Zeitpunkt der Eröffnung eines Geschäfts in den Bericht aufnehmen kann?

если сделки открываются советником,
добавить значение баланса в комментарий ордера.

string comment_=DoubleToStr(AccountBalance(),2);
OrderSend(...comment_..);

затем на истории считывать баланс из комментария
double Balance_Open=StrToDouble(OrderComment());
 
KONDOR:


Ich danke Ihnen! Es ist sehr schön, wenn jemand auf eine Anfrage antwortet. ))

Elegante und einfache Option, die Sie sich merken müssen. Ich habe das Problem eigentlich schon gelöst, aber es ist ein bisschen komplizierter:

void OnOff_Pos_Source_LP()
{  for(int count = 0; count < OrdersTotal(); count++)
      {  OrderSelect(count, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_Source_LP)
            {  Pos_Source_LP = TRUE;                     // Включить флаг основной позиции
               ticket_source_LP = OrderTicket();         // Присвоить глобальной переменной тикет текущей основной позиции
               Time_OpBar_Source_LP = Time[0];           // Запомнить время открытия свечи
               Acc_Balance_Open = AccountBalance(); }    // Запомнить значение баланса на открытии позиции
      }
}

Sie können sich also so viele merken, wie Sie wollen. Viel Glück bei allem!