[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 268

 

extern string AlliesO1 = "GBPUSD"; - валюта

string AlliesO[5]; - массив в котором хранятся валюты.



Так я проверяю нужно ли добавлять валюту в массив. (Изначально вместо валют нули, всего валют 5)

if (StringLen (AlliesO1)>2)
{
CountAlliesO++;
AlliesO [0] = AlliesO1;
}





Потом в цикле перебираю валюты и на каждой валюте открываю ордер.

for (int i=0;i<CountAlliesO;i++)

{
l_ticket_4 = OrderSend(AlliesO[i], OP_BUY, Lots, NormalizeDouble(Ask, Digits), l_slippage_8, iif(StopLoss == 0.0, 0, NormalizeDouble(Ask - StopLoss / MathPow(10, Digits), Digits)), iif(TakeProfit == 0.0, 0, NormalizeDouble(Ask +
TakeProfit / MathPow(10, Digits), Digits)), 0, Magic, 0, CLR_NONE);
Print ("Ticket " + Allies[i] + ": " + l_ticket_4);
}



Dies ist die Ausgabe:

22:05:25 RSI_Valut_Test2 EURUSD,H1: CountAlliesO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: CountEnemyO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: Allies: GBPUSD // - in der Schleife drucken AlliesO[i].
22:05:25 RSI_Valut_Test2 EURUSD,H1: Verbündete: GBPUSD
22:05:25 RSI_Valut_Test2 EURUSD,H1: Feind: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: Feind: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: Ticket USDCHF: -1

22:05:25 RSI_Valut_Test2: Symbolname für OrderSend-Funktion muss ein String sein


Nun, im Allgemeinen kann ich nicht alle Codes weitergeben, da ich gebeten wurde, sie nicht zu verteilen... Nun, es wurden ein paar Drucker eingesetzt, die diese Daten ausgeben... Warum wird gesagt, dass es sich nicht um eine Zeichenkette handelt, wenn sie als Zeichenkette deklariert ist?


Bitte helfen Sie mir, vielen Dank im Voraus.

 

Guten Abend zusammen. Bitte geben Sie mir Tipps, wie ich eine geeignete Funktion schreiben kann, um eine Order nach einigen geöffneten Bars zu schließen, und wie ich diese Anzahl optimieren kann.

 

CountBars - Anzahl der Balken.

Ticket - Bestellnummer.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Bei jedem Tick ausgeführt, nicht sicher über die Anzahl der Balken, kann es -1 oder +1 sein, weil ich nicht genau weiß, wie der Offset berechnet wird... Nun, es ist nicht schwer, das auf M1 zu überprüfen...

Ist das so?

 
PODLIY16:

CountBars - Anzahl der Balken.

Ticket - Bestellnummer.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Bei jedem Tick ausgeführt, nicht sicher über die Anzahl der Balken, kann es -1 oder +1 sein, weil ich nicht genau weiß, wie der Offset berechnet wird... Nun, es ist nicht schwer, das auf M1 zu überprüfen...

War es das?

 
isaev-av:

Ich denke schon. Ich bin kein Programmierer. Ich werde es jetzt versuchen. Die Hauptsache ist, dass es auf der TF funktioniert.
 
void CloseAfterSomeBar (int CountBars, int Ticket)
{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES);
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (BarShift>=CountBars)
{
if (OrderType() == OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Diese ist korrekt, sie schließt den Auftrag, sobald der richtige Balken geöffnet wird, zum Beispiel auf M1 habe ich es gerade ausprobiert, der Auftrag wurde in der neunten Minute geöffnet und um 11:01 Uhr geschlossen.

 
Können Sie mir sagen, wie man einen MA über einen RSI- oder Stohastic-Indikator legt, d. h. den MA nicht aus einem Diagramm, sondern aus einem Indikator entnimmt?
 
Es funktioniert nicht. Vielleicht kann sie jemand korrigieren. Guten Abend zusammen. Bitte geben Sie mir Tipps, wie ich eine geeignete Funktion schreiben kann, um eine Order nach einigen geöffneten Bars zu schließen, und wie ich diese Anzahl optimieren kann.
Dateien:
 

Versuchen Sie es mit 2 neuen Variablen:


extern bool IfTrueThenCountBarWork = false; // - wenn false, wird diese Funktion nicht funktionieren, um zu funktionieren ist es notwendig, true zu setzen.

extern inttern CountBar = 0; // - Anzahl der Balken, nach denen geschlossen werden soll. Ich habe oben beschrieben, wie die Balken gezählt werden.


Ich hoffe, ich habe etwas Nützliches getan.

Dateien:
 
PODLIY16:

Versuchen Sie es mit 2 neuen Variablen:


extern bool IfTrueThenCountBarWork = false; // - wenn Sie false einstellen, wird diese Funktion nicht funktionieren, Sie sollten true einstellen, damit sie funktioniert.

extern int CountBar = 0; // - Anzahl der Balken, nach denen geschlossen werden soll. Wie die Balken gezählt werden, habe ich oben geschrieben.


Ich hoffe, dass ich Ihnen in irgendeiner Weise helfen konnte.




Ich danke Ihnen!