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

 

Ich benötige Preise für schwebende Aufträge von Stopps und ich habe schwebende Aufträge wie folgt verwendet

PRAskL=Ask-Point*TakeProfit+Spread;  // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread;  // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread;  // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread;  // цена OpenSellStopOrder

где 
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,



но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)         
{if (OrderSelect(h-1,SELECT_BY_POS)==true)   
int Tip=OrderType();                   
if(HaveBuyOrder == true)continue; 
double PRAskS=OrderStopLoss();                   
double PRAskL=OrderTakeProfit();                    
int Tip1=OrderType();                           
if(HaveSellOrder == true)continue; 
double PRBidS=OrderStopLoss();                   
double PRBidL=OrderTakeProfit();   

но оно выдает ошибки 
Ошибка № 4107 при открытиии SELL ордера 
invalid takeprofit for OrderSend function

Ошибка № 4107 при открытиии BUY ордера              
invalid takeprofit for OrderSend function

Ich brauche einen Stopp und einen Yen-Kurs und muss die Spreads berücksichtigen.

 
FoxUA:

Ich benötige Preise für schwebende Aufträge von Stopps und ich habe schwebende Aufträge wie folgt verwendet

Wie löse ich dieses Problem? Ich sollte in der Lage sein, Yen bei Stopps zu nehmen und Gewinne zu erzielen, und gleichzeitig sollte ich auch die Spreads berücksichtigen.

Andrei, da haben wir es wieder, zu wenig Code, Sie haben einen Fehler in der Funktion OrderSend, während wir sie oder ihre Parameter in diesem Codeabschnitt nicht sehen können. Möchten Sie schwebende Aufträge auf der Grundlage von Stop-Losses und Take-Profits von bereits bestehenden Marktaufträgen platzieren?

 
ToLik_SRGV:

Andrei, wieder zu wenig Code, du hast einen Fehler in der Funktion OrderSend, und wir sehen sie oder ihre Parameter in diesem Teil des Codes nicht. Möchten Sie schwebende Aufträge auf der Grundlage der Daten von Stop-Losses und Take-Profits der bereits bestehenden Marktaufträge platzieren?

Ja, das ist richtig, setzen Sie schwebende Aufträge auf der Grundlage der Daten von Stop-Losses und Take-Profits bestehender Marktaufträge

der ganze Code ist zu groß, es ist ein Beispiel dafür, wie es bei mir funktioniert hat und was ich versucht habe zu tun, aber es ist nicht richtig, was wäre richtig für mich?

 

Ich habe ein regelbasiertes Beispiel, bei dem nur ein Auftrag eröffnet wird, d.h. Verkauf

d.h. für alle 4 Pending Orders sind der Eröffnungskurs bei Buy Loss und Sell Loss sowie der Buy Stop und Sell Stop gleich,

Ich möchte, dass ein Kauflimit bei Börsenschluss sofort geöffnet wird, z. B. Kauf auf Stopp,

GBPJPY,H1: SELL-Order eröffnet : 137.16
GBPJPY,H1: open #3897394 sell limit 0.30 GBPJPY at 137.16 sl: 138.36 tp: 135.96 ok
GBPJPY,H1: SELL-Order eröffnet : 134.76
GBPJPY,H1: open #3897393 sell stop 0.10 GBPJPY bei 134.76 sl: 135.96 tp: 133.56 ok
GBPJPY,H1: BUY-Order eröffnet : 134.76
GBPJPY,H1: open #3897392 buy limit 0.30 GBPJPY at 134.76 sl: 133.56 tp: 135.96 ok
GBPJPY,H1: BUY-Order eröffnet : 137.16
GBPJPY,H1: open #3897391 buy stop 0.10 GBPJPY bei 137.16 sl: 135.96 tp: 138.36 ok
GBPJPY,H1: SELL-Order eröffnet : 135.96
GBPJPY,H1: open #3897390 sell 0.10 GBPJPY at 135.96 sl: 137.16 tp: 134.76 ok
GBPJPY,H1: BUY-Order eröffnet : 136.04
GBPJPY,H1: open #3897389 buy 0.10 GBPJPY at 136.04 sl: 134.84 tp: 137.24 ok
GBPJPY,H1: initialisiert
GBPJPY,H1 Eingaben: StopLoss=120; TakeProfit=120; Lot=0.1; Magic=777; Slippage=5;
GBPJPY,H1: erfolgreich geladen

for(int o=1; o<=OrdersTotal(); o++)                                   
{if (OrderSelect(o-1,SELECT_BY_POS)==true)                               
{ if (OrderSymbol()!= Curr_symb) continue;                          
  if (OrderType()>1) continue;      
{if(HaveBuyOrder == true) 
double PRAskL=OrderStopLoss();                   
double PRAskS=OrderTakeProfit();      
{                   
int Tip1=OrderType();                         
if(HaveSellOrder == true)
double PRBidL=OrderStopLoss();                   
double PRBidS=OrderTakeProfit(); } }                  
} }              
 
hedger:

Helfen Sie mir, es herauszufinden.

Auf dem Chart, der nach Abschluss der Tests im Tester geöffnet werden kann, werden die Indikatoren, auf denen der EA basiert, nicht immer gezeichnet. Kann dies behoben werden und wenn ja, wie? Antworten Sie mir, bitte

Vielleicht gibt es eine Antwort auf meine Frage?
 
hedger:

Vielleicht gibt es eine Antwort auf meine Frage?

void HideTestIndicators( bool hide)
Die Funktion setzt ein Flag, um die vom Expert Advisor aufgerufenen Indikatoren auszublenden. Wenn das Diagramm nach dem Test geöffnet wird , werden die Indikatoren, die mit der Ausblenden-Flagge markiert sind, im Testdiagramm nicht angezeigt. Die Indikatoren werden vor jedem Aufruf mit dem aktuellen Ausblendungskennzeichen versehen.
Es ist zu beachten, dass nur die Indikatoren, die direkt vom zu testenden Experten aufgerufen werden, in der Testtabelle angezeigt werden können.
 
zhuki:

void HideTestIndicators( bool hide)
Die Funktion setzt ein Flag, um die vom Expert Advisor aufgerufenen Indikatoren auszublenden. Wenn das Diagramm nach dem Test geöffnet wird, werden die mit der Ausblendungsfahne markierten Indikatoren im Testdiagramm nicht angezeigt. Die Indikatoren werden vor jedem Aufruf mit dem aktuellen Ausblendungskennzeichen versehen.
Es ist zu beachten, dass nur die Indikatoren, die direkt von dem zu testenden Expert Advisor aufgerufen werden, im Testchart angezeigt werden können.

Danke, Igor! Ich musste die Grundlagen blind lernen.
 

weiß jemand, wie man den obigen Code reparieren kann, um den Wert von Variablen wie diesen zu setzen

PRAskL=StopLoss der Order Buy + Spread
PRAskS=TakeProfit der Order Buy + Spread
PRBidL=StopLoss Sell-Spread Aufträge
PRBidS=TakeProfit Sell-Spread Aufträge

 
FoxUA:

weiß jemand, wie man den obigen Code reparieren kann, um die Werte der Variablen wie folgt zu setzen

PRAskL=StopLoss-Aufträge Kauf + Spread
PRAskS=TakeProfit-Aufträge Kauf + Spread
PRBidL=StopLoss-Aufträge Verkauf-Spread
PRBidS=TakeProfit-Aufträge Verkauf-Spread

Wenn Sie Fehler im Zusammenhang mit falschen Stopps haben, dann überprüfen Sie die Größe der Stopp-Levels; verwenden Sie sie auch, um schwebende Aufträge zu überprüfen - Sie können nicht weniger als das setzen...

Zum Beispiel:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //Minimalabstand für das Setzen des Stopps

 
artmedia70:

Wenn Sie Fehler im Zusammenhang mit falschen Stopps haben, dann überprüfen Sie die Größe der Stopp-Levels; verwenden Sie sie auch, um schwebende Aufträge zu überprüfen - weniger ist nicht erlaubt...

Zum Beispiel:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //minimaler Abstand der Stopps


Der letzte öffnet sich ohne Fehler, aber nur mit den Verkaufsdaten. Es ist ein Ausschnitt aus dem Protokoll und das ist nicht die von mir beschriebene korrekte Preisverteilung.

Hier sind sie.

PRAskL=StopLoss Buy + Spread-Aufträge
PRAskS=TakeProfit von Kauf- und Spread-Aufträgen
PRBidL=StopLoss Sell-Spread Aufträge
PRBidS=TakeProfit Sell-Spread Aufträge

So sieht es jetzt aus

PRAskL=StopLoss Verkaufsauftrag

PRAskS=TakeProfit Verkaufsaufträge

PRBidL=StopLoss Verkaufsauftrag

PRBidS=TakeProfit Verkaufsauftrag