|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Zitat:
"hab keine Ahnung, was das Ding eigentlich macht" Ja, dann lass es doch einfach sein! Wozu dieser Thread, wenn Du nicht sauber programmieren kannst und im Endeffekt der EA freidreht, dann nützt der EA hier auch niemenden. Das ist doch alles Zeitverschwendung, Irreführung und was weiss ich noch alles. Ich habe in den vielen Jahren, in denen ich hier angemeldet bin, noch keinen User erlebt, der soviel Irrationalitäten verzapft hat, so Bildungsresitent und auf der anderen Seite so überzeugt von sich ist, hier permanent irgendwelche nicht funktionierenden Programme zu posten. Ich bitte Dich daher letztmalig, von dem Posten die als fertig deklarierten, aber eigentlich unfertigen, nicht funktionierenden "Programme" abzusehen. Ich bemühe seit meiner Anmeldung hier, um einen programmtechnischen Standard, den ich durch Deine bisherigen Posts aus o.g. Gründen verletzt sehe. Vielen Usern wurde bei Problemen der Programmierung tatkräftig geholfen, aber alle waren in der Lage, aus ihren Problemen gezielt zu lernen. Das vermisse ich bei Dir, trotz unsere zahlrreichen Hilfen. Und das kann so bitte nicht weitergehen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hab doch eigentlich immer gesagt, dass da noch Fehler drin sein könnten. Hab ich irgendwo behauptet, das der Krempel 100%ig funktioniert?
Hab ja immer auf Hilfe von den Experten hier gehofft. Da die aber irgendwie nie so richtig kommt, komm ich irgendwie auch nicht richtig weiter. Jeder hat seine Art zu traden, und mein Ziel ist, den EA, um den es hier geht, endlich fertig zu bekommen. Kann ja verstehn, dass dem Ein oder Anderen nen EA, der auf ne Art MartinGale-Strategie setzt, nicht gefällt, aber geht es darum, ob man die Strategie gut findet? Nun ja, im Anhang meine neueste Version. Die scheint zu öffnen und zu schließen wann sie soll. Allerdings öffnet sie viel zu viele Orders und ich hab keinen Schimmer warum. Vermutlich irgendwas mit den for-Schleifen nicht richtig, die sind wie gesagt gar nicht mein Gebiet. Bzw. mit dem Zählen und Berechnen der Variablen in den for-Schleifen stimmt nicht. Vermute, das Problem ist irgendwo bei OrderSearch 2 und OrderSearch 3, ich weiß es nicht. Wie gesagt wär ich dankbar für Hinweise, Tipps, Erklärungen, für Alles was mich irgendwie weiter bringen könnte. Ob die "Strategie" gefällt oder nicht, sie k a n n Gewinn bringen. Irgendwo in diesem Code müsste der Fehler sein. Hab aber keine Ahnung, was nicht stimmt. Code:
//============================================================================================================= // O R D E R S E A R C H 2 //============================================================================================================= for(j=OrdersTotal()-1;j>=0;j--){ if(OrderSelect(j,SELECT_BY_POS)){ if(OrderSymbol()==Symbol()){ if(OrderMagicNumber()==MN_FiSel)fi_SH=true; if(OrderMagicNumber()==MN_FiBuy)fi_LO=true; if(OrderMagicNumber()==MN_Buy_FiSel)LO_fiSH=true; if(OrderMagicNumber()==MN_Sel_FiBuy)SH_fiLO=true; if(OrderMagicNumber()==MN_NeSel)ne_SH=true; if(OrderMagicNumber()==MN_NeBuy)ne_LO=true;}}} //-----------------------------------------------------------------------------------------------------------*/ // Wenn nach OS2 nur FirstSel und FirstBuy offen sind... if( fi_SH==true && fi_LO==true ){ //============================================================================================================= //( O S 2 ) O P E N N E X T S E L B Y F I R S T B U Y //============================================================================================================= //...wenn nach OS2 noch kein NextSel offen ist... if( SH_fiLO==false && ne_SH==false ){ // ...prüfen, ob FirstBuy unter DON_Sel ist: if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ FiBuy_DON_Sel=NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits); // Wenn FirstBuy unter DON_Sel ist... if( Bid <= FiBuy_DON_Sel ){ // ...First-NextSel öffnen. for( k=OrdersNeed_Multi ; k>0 ; k-- ){// ? if(IsTradeAllowed()==true)TI_Sel_FiBuy=OrderSend(Symbol(),OP_SELL,Lots,Ask,Slippage,SL_Sel,TP_Sel,NULL,MN_Sel_FiBuy,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Sel++; Need_Buy = OrdersNeed_Multi * Opened_Sel; Need_Sel = OrdersNeed_Multi * Need_Buy;} }// FirstBuy unter DON_Sel. Erste NextSel öffnen. //-----------------------------------------------------------------------------------------------------------*/ } }// Nach Os2 FirstBuy ausgewählt. }// Nach OS2 noch kein(e) NextSel offen. //============================================================================================================= //( O S 2 ) O P E N N E X T B U Y B Y F I R S T S E L //============================================================================================================= //...wenn nach OS2 noch kein NextBuy offen ist... if( LO_fiSH==false && ne_LO==false ){ // ...prüfen, ob FiSel über DON_Buy ist: if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ FiSel_DON_Buy=NormalizeDouble( OrderOpenPrice() + D_ONO *Point,Digits); // Wenn FirstSel über D_ON_Buy ist... if( Ask >= FiSel_DON_Buy ){ // ...First-NextBuy öffnen. for( l=OrdersNeed_Multi ; l>0 ; l-- ){// ? if(IsTradeAllowed()==true)TI_Buy_FiSel=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_Buy_FiSel,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Buy++; Need_Sel = OrdersNeed_Multi * Opened_Buy; Need_Buy = OrdersNeed_Multi * Need_Sel;} }// FirstSel über DON_Buy //-----------------------------------------------------------------------------------------------------------*/ } }//Nach Os2 FirstSel ausgewählt. }// Nach OS2 noch kein(e) NextBuy offen. //-----------------------------------------------------------------------------------------------------------*/ }// nach OS2 (nur) FirstSel und FirstBuy offen. //============================================================================================================= // O R D E R S E A R C H 3 //============================================================================================================= for(m=OrdersTotal()-1;m>=0;m--){ if(OrderSelect(m,SELECT_BY_POS)){ if(OrderSymbol()==Symbol()){ if(OrderMagicNumber()==MN_FiSel)fi_SH=true; if(OrderMagicNumber()==MN_FiBuy)fi_LO=true; if(OrderMagicNumber()==MN_Buy_FiSel)LO_fiSH=true; if(OrderMagicNumber()==MN_Sel_FiBuy)SH_fiLO=true; if(OrderMagicNumber()==MN_NeSel)ne_SH=true; if(OrderMagicNumber()==MN_NeBuy)ne_LO=true;}}} //-----------------------------------------------------------------------------------------------------------*/ //Wenn nach OS3 FirstSel und FirstBuy offen sind... if( fi_SH==true && fi_LO==true ){ //============================================================================================================= //( O S 3 ) O P E N M O R E S E L B Y F I R S T N E X T B U Y //============================================================================================================= //...wenn nach OS3 NextBuy_by_FirstSel offen ist... if( LO_fiSH==true ){ //-----------------------------------------------------------------------------------------------------------*/ // ...wenn nach OS3 noch kein Next-NextBuy offen ist... if( ne_LO==false ){ // ...prüfen, ob NeBuy-byFirstSel unter DON_Sel ist: if(OrderSelect(TI_Buy_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ NeBuy_DON_Sel=NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits); // Wenn letzter NextBuy unter DON_Sel ist... if( Bid <= NeBuy_DON_Sel ){ // ...prüfen, ob FiSel DCAO erreicht hat: if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ DCAO_FiSel=NormalizeDouble( OrderOpenPrice() - D_CAO *Point,Digits); // Wenn FirstSel über DCAO ist... if( Ask > DCAO_FiSel ){ // ...weitere SelOrders by NextBuy öffnen. for( n=Need_Sel ; n>0 ; n-- ){// ? if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Sel++; Need_Buy = OrdersNeed_Multi * Opened_Sel; Need_Sel = OrdersNeed_Multi * Need_Buy;} }// FirstSel über DCAO. Weitere NeSel by Buy öffnen. ? } }// FirstSel ausgewählt. }// Letzter NeBuy unter NextBuy_DON_Sel. } }// Nach OS3 NextBuy-by-FirstSel ausgewählt. //-----------------------------------------------------------------------------------------------------------*/ }// Nach OS3 noch kein Next-NextBuy offen. //============================================================================================================= //( O S 3 ) O P E N M O R E S E L B Y N E X T N E X T B U Y //============================================================================================================= //...wenn nach OS3 doch Next-NextBuy offen ist... if( ne_LO==true ){ // ...prüfen, ob Next-NextBuy unter DON_Sel ist: if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ NeBuy_DON_Sel=NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits); // Wenn letzter NextBuy unter D_ON_Sel ist... if( Bid <= NeBuy_DON_Sel ){ // ...prüfen, ob FiSel DCAO erreicht hat: if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ DCAO_FiSel=NormalizeDouble( OrderOpenPrice() - D_CAO *Point,Digits); // Wenn FirstSel über DCAO ist... if( Ask > DCAO_FiSel ){ // ...weitere SelOrders by Next-NextBuy öffnen. for( n=Need_Sel ; n>0 ; n-- ){// ? if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Sel++; Need_Buy = OrdersNeed_Multi * Opened_Sel; Need_Sel = OrdersNeed_Multi * Need_Buy;} }// Nach OS3 FiSel über DCAO. Weitere NeSel by Buy öffnen. ? } }// Nach OS3 FirstSel ausgewählt. }// Nach OS3 letzter NeBuy unter D_ON_Sel } }// Nach OS3 Next-NextBuy ausgewählt. }// Nach OS3 Next-NextBuy offen. //-----------------------------------------------------------------------------------------------------------*/ }// Nach OS3 NextBuy-by-FirstSel offen. //============================================================================================================= // ( O S 3 ) O P E N M O R E B U Y B Y F I R S T N E X T S E L //============================================================================================================= //...wenn nach OS3 First-NextSel offen ist... if( SH_fiLO==true ){ //-----------------------------------------------------------------------------------------------------------*/ // ...wenn nach OS3 noch kein Next-NextSel offen ist... if( ne_SH==false ){ // ...prüfen, ob NeSel über DON_Buy ist: if(OrderSelect(TI_Sel_FiBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ NeSel_DON_Buy=NormalizeDouble( OrderOpenPrice() + D_ONO *Point,Digits); // Wenn NextSel über DON_Buy ist... if( Ask >= NeSel_DON_Buy ){// Ask oder Bid ? // ...prüfen, ob FirstBuy D_CAO erreicht hat: if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ DCAO_FiBuy=NormalizeDouble( OrderOpenPrice() + D_CAO *Point,Digits); // Wenn FirstBuy unter D_CAO ist... if( Bid < DCAO_FiBuy ){ // ...weitere Buy-Orders by NextSel öffnen: for( o=Need_Buy ; o>0 ; o-- ){ if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Buy++; Need_Sel = OrdersNeed_Multi * Opened_Buy; Need_Buy = OrdersNeed_Multi * Need_Sel;} }// Nach OS3 FiBuy unter D_CAO. Open more Buy by NeSel. } }// Nach OS3 FirstBuy ausgewählt. }// Nach OS3 NeSel über D_ON_Buy. } }// Nach OS3 NeSel_by_FirstBuy ausgewählt. //-----------------------------------------------------------------------------------------------------------*/ }// nach OS3 noch kein Next-NextSel offen //============================================================================================================= // O P E N M O R E B U Y B Y N E X T N E X T S E L //============================================================================================================= // ...wenn nach OS3 doch Next-NextSel offen ist... if( ne_SH==true ){ // ...prüfen, ob NeSel über DON_Buy ist: if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ NeSel_DON_Buy=NormalizeDouble( OrderOpenPrice() + D_ONO *Point,Digits); // Wenn NextSel über DON_Buy ist... if( Ask >= NeSel_DON_Buy ){// Ask oder Bid ? // ...prüfen, ob FirstBuy D_CAO erreicht hat: if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ DCAO_FiBuy=NormalizeDouble( OrderOpenPrice() + D_CAO *Point,Digits); // Wenn FirstBuy unter D_CAO ist... if( Bid < DCAO_FiBuy ){ // ...weitere Buy-Orders by NextSel öffnen: for( o=Need_Buy ; o>0 ; o-- ){ if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_NeBuy,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Buy++; Need_Sel = OrdersNeed_Multi * Opened_Buy; Need_Buy = OrdersNeed_Multi * Need_Sel;} }// Nach OS3 FiBuy unter D_CAO. Open more Buy by NeSel. } }// Nach OS3 FirstBuy ausgewählt. }// NeSel über D_ON_Buy. } }// Nach OS3 Next-NextSel ausgewählt. //-----------------------------------------------------------------------------------------------------------*/ }// nach OS3 Next-NextSel offen. //-----------------------------------------------------------------------------------------------------------*/ }// nach OS3 FirstNextSel offen. //-----------------------------------------------------------------------------------------------------------*/ }// Nach OS3 firstSel und firstBuy offen. |
|
|||
Zitat:
Wie man Fehler aufspürt, wurde hier im Forum schon x-mal gepostet. Und wenn man dann die betreffende Stelle gefunden hat und das selber nicht korrigieren kann, dann kann man natürlich fragen. Zitat:
Dir wurde schon eine komplette fertige und funktionierende Version geliefert (und das ohne jegliche Kosten). Dir wurden schon x-mal Antworten auf die grundlegendsten Verständnisfragen gegeben. Aber anstatt die Antworten zu lesen und sie zu verwenden, um Deine Probleme zu lösen, hat Dich das einen Sch...dreck interessiert. Also wundere Dich nicht, wenn alle müde sind, irgendwelche Hilfen zu posten. Zitat:
Auch das wurde Dir schon x-mal gesagt. Wenn Du andere Leute und das was sie schreiben ignorierst, dann wundere Dich nicht, wenn sie Dich auch ignorieren. Da hilft es auch nicht - weder Dir noch anderen - wenn Du alle Naselang einen neuen Code bringst. AVT |
|
|||
Hallo.
Ist das eigentlich gut, wenn man irgendwie Berechnungen mit OrderOpenPrice() macht, und dann prüft, ob Ask/Bid über/unter dem Ergebnis sind? Kanns da zu Fehlern kommen? Z.B. dass er eben viel mehr Orders öffnet, als er soll? Code:
//...wenn nach OS3 doch NextBuy-by-NextSel offen ist... if( ne_LO==true ){ // ...prüfen, ob NextBuy_by_NextSel unter DON_Sel ist: if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ NeBuy_DON_Sel=NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits); // Wenn letzter NextBuy unter DON_Sel ist... if( Ask <= NeBuy_DON_Sel ){// Ask testen. // ...prüfen, ob FirstSel DCAO erreicht hat: if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ DCAO_FiSel=NormalizeDouble( OrderOpenPrice() - D_CAO *Point,Digits); // Wenn FirstSel über DCAO ist... if( Ask > DCAO_FiSel ){ Need_Sel = OrdersNeed_Multi * Opened_Buy; // ...weitere SelOrders by Next-NextBuy öffnen. for( n=Need_Sel ; n>0 ; n-- ){// ? if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NeSel,clrBlue); if(IsTradeContextBusy()==true)Sleep(slMS); Opened_Sel++;} }// Nach OS3 FiSel über DCAO. Weitere NeSel by Buy öffnen. ? } }// Nach OS3 FirstSel ausgewählt. }// Nach OS3 letzter NeBuy unter D_ON_Sel } }// Nach OS3 Next-NextBuy ausgewählt. }// Nach OS3 doch NextBuy_by_NextSel offen. Ich hab keine Hilfestellungen ignoriert. Will ja nicht meckern, aber sie haben mir nicht wirklich geholfen. Oder bezogen sich erst gar nicht auf den EA/aufs Proggen. |
|
|||
Hallo.
Im Anhang ne Print-Version. Ist Einiges einfacher und vor Allem der gesamte Code kürzer geworden. Öffnen der ersten paar Orders scheint zu funktionieren. Dann aber öffnet er viel zu Viele Orders. Neulich irgendwie 100 Stück. Höchstwahrscheinlich liegts an irgendwelchen Schleifen, Welche ja gar nicht mein Fall sind. Vielleicht hängt er sich da irgendwo etliche Male auf und gleichzeitig werden irgendwie zig Orders geöffnet, die gar nicht geöffnet werden sollen. Vermute, dass hier irgendwo der Fehler ist, vielleicht sind ja auch mehrere Sachen falsch. Vielleicht liegts aber auch an OrderModify() darunter. Code:
//============================================================================================================= // ( O C 2 ) O P E N M O R E N E X T - S E L B Y N E X T - B U Y //============================================================================================================= //...wenn nach OC2 schon NextBuy-by-NextSel offen ist... if( ne_LO==true ){ // ...OOP für NextSel-by-NextBuy berechnen: if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){ if(OrderType()==OP_BUY){ if(OrderSymbol()==Symbol()){ OOP_Sel_NeBuy = NormalizeDouble( OrderOpenPrice() - D_ONO *Point,Digits); if( OOP_Sel_NeBuy > TP_FiSel ){ Need_Sel = Opened_Buy * OrdersNeed_Multi; for( j=Need_Sel ; j>0 ; j-- ){// ? if(IsTradeAllowed())TI_NeSel = OrderSend(Symbol(),OP_SELLSTOP,Lots,OOP_Sel_NeBuy,Slippage,SL_FiSel,TP_FiSel,NULL,MN_NeSel,0,Blue); if(IsTradeContextBusy())Sleep(slMS); if(TI_NeSel>=1)Opened_Sel++; Print("-Sended NextSel-by-NextBuy:", "-OrderSymbol():",OrderSymbol(), "-Symbol():",Symbol(), "-OOP_Sel_NeBuy=",DoubleToStr(OOP_Sel_NeBuy,Digits), "-D_ONO=",D_ONO, "-Need_Sel=",Need_Sel, "-Opened_Buy=",Opened_Buy, "-OrdersNeed_Multi=",OrdersNeed_Multi, "-j=",j, "-TI_NeBuy:",TI_NeBuy, "-TI_NeSel:",TI_NeSel, "-MN_NeSel:",MN_NeSel ); } } } } } }// Nach OC2 NextBuy-by-NextSel offen. //============================================================================================================= // ( O C 2 ) O P E N M O R E N E X T - B U Y B Y N E X T - S E L //============================================================================================================= //...wenn nach OC2 NextSel-by-NextBuy offen ist... if( ne_SH==true ){ // OOP für NextBuy-by-NextSel berechnen: if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){ if(OrderType()==OP_SELL){ if(OrderSymbol()==Symbol()){ OOP_Buy_NeSel = NormalizeDouble( OrderOpenPrice() + D_ONO *Point,Digits); if( OOP_Buy_NeSel < TP_FiBuy ){ Need_Buy = Opened_Sel * OrdersNeed_Multi; for( k=Need_Buy ; k>0 ; k-- ){// ? if(IsTradeAllowed())TI_NeBuy = OrderSend(Symbol(),OP_BUYSTOP,Lots,OOP_Buy_NeSel,Slippage,SL_FiBuy,TP_FiBuy,NULL,MN_NeBuy,0,Yellow); if(IsTradeContextBusy())Sleep(slMS); if(TI_NeBuy>=1)Opened_Buy++; Print("-Sended NextBuy-by-NextSel:", "-OrderSymbol():",OrderSymbol(), "-Symbol():",Symbol(), "-OOP_Buy_NeSel=",DoubleToStr(OOP_Buy_NeSel,Digits), "-D_ONO=",D_ONO, "-Need_Buy=",Need_Buy, "-Opened_Sel=",Opened_Sel, "-OrdersNeed_Multi=",OrdersNeed_Multi, "-k=",k, "-TI_NeBuy:",TI_NeBuy, "-TI_NeSel:",TI_NeSel, "-MN_NeSel:",MN_NeSel ); } } } } } }// Nach OC2 NextSel-by-NextBuy offen. Code:
//============================================================================================================= // O R D E R C H E C K 2 //============================================================================================================= // Wenn nach OC2 FirstSel und FirstBuy offen sind... if( fi_SH==true && fi_LO==true ){ //============================================================================================================= // ( O C 2 ) O R D E R M O D I F Y F I R S T S E L / F I R S T B U Y //============================================================================================================= //...FirstSel SL und TP genau mit OOP berechnen: if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ SL_FiSel = NormalizeDouble( OrderOpenPrice() + SL *Point,Digits); TP_FiSel = NormalizeDouble( OrderOpenPrice() - TP *Point,Digits); if(OrderStopLoss()!=SL_FiSel||OrderTakeProfit()!=TP_FiSel){ if(IsTradeAllowed())OM_Sel=OrderModify(OrderTicket(),OrderOpenPrice(),SL_FiSel,TP_FiSel,Aqua); if(IsTradeContextBusy())Sleep(slMS);} Print("-OM FirstSel:", "-TI_FiSel=",TI_FiSel, "-SL_FiSel=",DoubleToStr(SL_FiSel,Digits), "-OrderOpenPrice()=",DoubleToStr(OrderOpenPrice(),Digits), "-GV SL=",SL, "-TP_FiSel=",DoubleToStr(TP_FiSel,Digits), "-GV TP=",TP ); }} //-----------------------------------------------------------------------------------------------------------*/ //...FirstBuy SL und TP genau mit OOP berechnen: if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){ if(OrderSymbol()==Symbol()){ SL_FiBuy = NormalizeDouble( OrderOpenPrice() - SL *Point,Digits); TP_FiBuy = NormalizeDouble( OrderOpenPrice() + TP *Point,Digits); if(OrderStopLoss()!=SL_FiBuy||OrderTakeProfit()!=TP_FiBuy){ if(IsTradeAllowed())OM_Buy=OrderModify(OrderTicket(),OrderOpenPrice(),SL_FiBuy,TP_FiBuy,Aqua); if(IsTradeContextBusy())Sleep(slMS);} Print("-OM FirstBuy:", "-TI_FiBuy=",TI_FiBuy, "-SL_FiBuy=",DoubleToStr(SL_FiBuy,Digits), "-OrderOpenPrice()=",DoubleToStr(OrderOpenPrice(),Digits), "-GV SL=",SL, "-TP_FiBuy=",DoubleToStr(TP_FiBuy,Digits), "-GV TP=",TP ); } } |
|
|||
Print() mit DTS() hab ich versucht. Das Einzige was mir auffiel, war, dass er in irgendner Schleife festzuhängen schien. Ansonsten ist das Gerät nur für kurzfristiges Forex-MartinGale-Scalping da. Niedriger Spread, mehrere gegeneinander laufende Orders, möglichst oft mehrere kleine Gewinne, bei im Grunde 0 Risiko. Was z.B. bei den Buy-Orders verloren geht, wenn der Kurs Short läuft, holen die doppelt oder dreimal so vielen Sell-Orders wieder rein. Bzw. andersrum.
Wie könnte man das mit Roulette vergleichen... Edit:Mit OrderProfit() würde es zwar irgendwie gehn, aber das wär wieder Rechnerei ohne Ende. Besonders bei Forex müsste es mit Pips/Punkten besser sein. Wie könnte man das machen mit OrderProfit()? Besser wärs wohl, TP/SL so zu modifizieren, dass er alle Orders schließt, sobald dabei mehr Gewinn als Verlust raus kommt. Wie könnte man das machen... Edit:Mit SL/TP ist es vermutlich sowieso besser. Dann werden beide Richtungen bei (fast) gleichem Kurs geschlossen. Aufgrund der Spreads könnte man vielleicht sogar noch nen paar Punkte extra raus holen... Aber ich bin wie gesagt leider kein Mathe-Experte... Geändert von MA-EA (28.02.21 um 23:30 Uhr) |
|
|||
Und genau darüber wirst Du jetzt viele Nächte alleine nachdenken müssen.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Dies ist keine Antwort auf einen der unsäglichen Monologe des EA-MAs! Ich sehe allerdings, dass sich doch sehr viele für die „Thematik“ des Threads interessieren. Deshalb in der Anlage ein EA, der sicher funktioniert. Wie bei allen Martingale- oder Grid-EAs ist das Risiko jedoch sehr hoch und böse Zungen sagen ja auch, bei solchen EAs es nicht die Frage ist ob, sondern nur wann das Konto zerschossen wird. Mit der Standardeinstellung hat der EA im EURUSD zumindest das Jahr 2020 überstanden. Lasst mal hören ob ihr andere Paare findet, die erfolgreich laufen.
Grüße |
Lesezeichen |
|
|