Wie programmiert man? - Seite 310

 

...

Für Run-Time-Spread(s) verwenden Sie diese :

double currentSpread = MarketInfo(Symbol().MODE_SPREAD);
Premeus:
Ich möchte Spread-Echtzeit-Code in EA zeigen. Bitte geben Sie mir einige Ratschläge.
 

Danke, Malden. Aber ich weiß, dass PHP-Code für Webserver. Ich weiß nicht, um in Seite EA Code. Oder es ist für andere stehen.

Bitte sagen Sie mir mehr spezifisch. Sorry, ich bin gerade neu in MQL4 Programmierung.

Und ich an nicht sicher, wie und welche Teil des Programms ausgeführt wurde, wenn neue Preis kommt in.

Das ganze Programm oder in der Seite init() oder innerhalb von start().

Ich möchte Tick-Informationen zu erhalten und zeigen, wie ich diesen Thread fragen.

 

Premeus

Das ist der Metatrader MQl 4 Code, der den Spread für das aktuelle Symbol ermittelt. Kopieren Sie ihn einfach in Ihren Code und Sie werden die Spread-Informationen auf diese Weise abrufen können

Diese Codezeile sollte in start() stehen, um den Spread für jeden einzelnen Tick zu prüfen (da er sich bei jedem Tick ändern kann). Sobald Sie die Funktion MarketInfo() aufgerufen haben und der Variablen currentSpread der Wert zugewiesen wurde, verwenden Sie den currentSpread für alle Tests oder weitere Verarbeitungen, die Sie benötigen.

Premeus:
Vielen Dank Malden. Aber ich weiß, dass PHP-Code für Web-Server. Ich weiß nicht, um Code in Seite EA. Oder es ist für andere stehen.

Bitte sagen Sie mir mehr spezifisch. Tut mir leid, ich bin noch neu in der MQL4-Programmierung.

Und ich bin mir nicht sicher, wie und welcher Teil des Programms ausgeführt wurde, wenn ein neuer Preis eintrifft.

Das ganze Programm oder in der Seite init() oder innerhalb von start().

Ich möchte tick Informationen zu erhalten und zeigen, wie ich diesen Thread fragen.
 

MartingailExpert_v1.0_Stochastik, wie?

Hallo!

Kann mir jemand sagen, warum ich im Order send ticket keinen Stoploss einfügen kann?

Wenn ich ihn einfüge, funktioniert der EA nicht mehr!

Danke!

//+------------------------------------------------------------------+

//| aaa.mq4 |

//| Urheberrecht Š 2007, MetaQuotes Software Corp. |

//| TeamWox Groupware / MetaQuotes Software Corp. |

//+------------------------------------------------------------------+

#property copyright "Copyright Š 2007, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

extern double step=25;

extern int StepMode=0;

// Ĺńëč StepMode = 0, ňî řŕă ěĺćäó îđäĺđŕěč ôčęńčđîâŕííűé č đŕâĺí step

// Ĺńëč StepMode = 1, ňî řŕă ďîńňĺďĺííî óâĺëč÷čâŕĺňń˙

extern double proffactor=10;

extern double mult=1.5;

extern double lotsbuy=0.01;

extern double lotssell=0.01;

extern double pro_K=200;

extern double pro_D=20;

extern double slow=20;

extern double zoneBUY=20;

extern double zoneSELL=80;

extern double Magicsbuy=555;

extern double Magicsell=556;

double openpricebuy,openpricesell,lotsbuy2,lotssell2,lastlotbuy,lastlotsell,tpb,tps,cnt,smbuy,smsell,lotstep,

ticketbuy,ticketsell,maxLot,free,balance,lotsell,lotbuy,dig,sig_buy,sig_sell,ask,bid;

int OrdersTotalMagicbuy(int Magicbuy)

{

int j=0;

int r;

for (r=0;r<OrdersTotal();r++)

{

if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))

{

if (OrderMagicNumber()==Magicbuy) j++;

}

}

return(j);

}

int OrdersTotalMagicsell(int Magicsell)

{

int d=0;

int n;

for (n=0;n<OrdersTotal();n++)

{

if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES))

{

if (OrderMagicNumber()==Magicsell) d++;

}

}

return(d);

}

int orderclosebuy(int ticketbuy)

{

string symbol = Symbol();

int cnt;

for(cnt = OrdersTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol && OrderMagicNumber()==Magicbuy)

{

ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;

double bid = MarketInfo(Symbol,MODE_BID);

RefreshRates();

OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta);

}

}

lotsbuy2=lotsbuy;return(0);

}

int orderclosesell(int ticketsell)

{

string symbol = Symbol();

int cnt;

for(cnt = OrdersTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol && OrderMagicNumber()==Magicsell)

{

ticketsell=OrderTicket();OrderSelect(ticketsell, SELECT_BY_TICKET, MODE_TRADES);lotssell2=OrderLots() ;

double ask = MarketInfo(Symbol,MODE_ASK);

RefreshRates();

OrderClose(ticketsell,lotssell2,ask,3, Lime);

}

}

lotssell2=lotssell;return(0);

}

int start()

{

//----

double profitbuy=0;double profitsell=0;

string symbol = OrderSymbol();

double spread = MarketInfo(symbol,MODE_SPREAD);

double minLot = MarketInfo(symbol,MODE_MINLOT);

if (minLot==0.01){dig=2;maxLot=MarketInfo(symbol,MODE_MAXLOT);}

if (minLot==0.1){dig=1;maxLot=((AccountBalance()/2)/1000);}

if(OrdersTotalMagicbuy(Magicbuy)>0)

{

double smbuy;

for (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber () == Magicbuy)

{

ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);

smbuy = smbuy+OrderLots();openpricebuy = OrderOpenPrice();lastlotbuy = OrderLots();

}

}

{

if (smbuy+(NormalizeDouble((lastlotbuy*mult),dig))<maxLot)

{

if(StepMode==0)

{

if(Ask<=openpricebuy-step*Point)

{

lotsbuy2=lastlotbuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

}

if(StepMode==1)

{

if(Ask<=openpricebuy-(step+OrdersTotalMagicbuy(Magicbuy)+OrdersTotalMagicbuy(Magicbuy)-2)*Point)

{

lotsbuy2=lastlotbuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

}

}

}

}

if(OrdersTotalMagicsell(Magicsell)>0)

{

double smsell;

for (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber () == Magicsell)

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);

smsell = smsell + OrderLots();openpricesell = OrderOpenPrice();lastlotsell = OrderLots();

}

}

{

if (smsell+(NormalizeDouble((lastlotsell*mult),dig))<maxLot)

{

if(StepMode==0)

{

if(Bid>=offenePreiseVerkauf+Schritt*Punkt)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

}

if(StepMode==1)

{

if(Bid>=openpricesell+(step+OrdersTotalMagicsell(Magicsell)+OrdersTotalMagicsell(Magicsell)-2)*Point)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

}

}

}

}

//xm7-Änderung zur Änderung der Art und Weise der Signalerzeugung. Der alte Code steht am Ende

double Stoch_0 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,0);

double Stoch_1 = iStochastic(NULL,0,pro_K,pro_D,slow,MODE_LWMA,1,0,1);

if(OrdersTotalMagicbuy(Magicbuy)<1)

{

if(Stoch_0 > zoneBUY && Stoch_1 <= zoneBUY)

ticketbuy = OrderSend(Symbol(),OP_BUY,lotsbuy,Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

if(OrdersTotalMagicsell(Magicsell)<1)

{

if(Stoch_0 = zoneSELL)

ticketsell = OrderSend(Symbol(),OP_SELL,lotssell,Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

for (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy)

{

ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);profitbuy = profitbuy+OrderProfit() ;

openpricebuy = OrderOpenPrice();

}

}

tpb = (OrdersTotalMagicbuy(Magicbuy)*proffactor*Point)+openpricebuy;

double bid = MarketInfo(Symbol(),MODE_BID);

if (profitbuy>0)

{

if (Bid>=tpb) orderclosebuy(ticketbuy);

}

for (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicsell)

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);profitsell = profitsell+OrderProfit();

openpricesell = OrderOpenPrice();

}

}

tps = openpricesell-(OrdersTotalMagicsell(Magicsell)*proffactor*Point);

double ask = MarketInfo(Symbol(),MODE_ASK);

if (profitsell>0)

{

if (Ask<=tps)orderclosesell(ticketsell);

}

free = AccountFreeMargin();balance = AccountBalance();

for (cnt=0;cnt< OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket();

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket();

}

if (OrdersTotalMagicbuy(Magicbuy)==0)

{

profitbuy=0;ticketbuy=0;tpb=0;

}

if (OrdersTotalMagicsell(Magicsell)==0)

{

profitsell=0;ticketsell=0;tps=0;

}

Comment("FreeMargin = ",NormalizeDouble(free,0)," Balance = ",NormalizeDouble(balance,0)," maxLot = ",NormalizeDouble(maxLot,dig),"\n",

"Totalbuy = ",OrdersTotalMagicbuy(Magicbuy)," Lot = ",smbuy," Totalsell = ",OrdersTotalMagicsell(Magicsell)," Lot = ",smsell,"\n",

"---------------------------------------------------------------","\n","Profitbuy = ",profitbuy,"\n",

"Profitsell = ",profitsell);

//----

for(int ii=0; ii<2; ii+=2)

{

ObjectDelete("rect "+ii);

ObjectCreate("rect "+ii,OBJ_HLINE, 0, 0,tps);

ObjectSet("rect "+ii, OBJPROP_COLOR, Red);

ObjectSet("rect "+ii, OBJPROP_WIDTH, 1);

ObjectSet("rect "+ii, OBJPROP_RAY, False);

}

for(int rr=0; rr<2; rr+=2)

{

ObjectDelete("rect1"+rr);

ObjectCreate("rect1"+rr,OBJ_HLINE, 0, 0,tpb);

ObjectSet("rect1"+rr, OBJPROP_COLOR, Blau);

ObjectSet("rect1"+rr, OBJPROP_WIDTH, 1);

ObjectSet("rect1"+rr, OBJPROP_RAY, False);

}

return(0);

}
 

...

Dafür kann es mehrere Gründe geben, aber die häufigsten sind:

- Stop-Loss und / oder Take-Profit sind zu nah am aktuellen Kurs

- Ihr Broker ist ein ECN/STP-Broker, d.h. Sie müssen zuerst eine Order mit Stop Loss und Take Profit auf 0 setzen, und erst wenn eine Order eröffnet wird, können Sie den Stop Loss und/oder Take Profit auf die gewünschten Werte ändern (natürlich unter Beachtung des vorherigen Punktes)

pearl1:
Hallo!

Kann mir jemand sagen, warum ich im Order-Send-Ticket keinen Stoploss einfügen kann?

Wenn ich es einfüge, wird EA nicht funktionieren!

Danke!
 

Hallo zusammen, ich möchte gerne wissen, wie ich den letzten aktuellen Kurs auf dem Chart bekomme? Ich weiß, seine noob, aber ich kann nicht scheinen, um die ans zu finden. Bitte helfen Sie mir. Danke!

Mit freundlichen Grüßen

Terrance

 

...

Kommt darauf an, welcher :

- aktueller Bid-Kurs ist Bid

- aktueller Briefkurs ist Ask

- Jeder andere Preis: Verwenden Sie den Index Null für den aktuellen Preis, also ist Close[0] der aktuelle Schlusskurs, Open[0] der aktuelle Eröffnungskurs usw.

tkuan77:
Hallo zusammen, ich würde gerne wissen, wie ich den letzten aktuellen Kurs im Chart erhalte? Ich weiß, es ist ein Noob, aber ich kann die Antwort nicht finden. Bitte helfen Sie mir. Danke!

Mit freundlichen Grüßen

Terrance
 

Hallo Mladen, Was ich versuche zu tun, ist eine Überprüfung. Wenn zum Beispiel der aktuelle Kurs über dem SMA 100 liegt, zoome ich auf einen niedrigeren Zeitrahmen herunter und schaue nur auf das Kaufsignal. Aber wenn ich Bid oder Ask verwende, kann das System nicht entscheiden, ob ich gerade long oder short bin, da ich bei Bid nach long suchen sollte und umgekehrt bei Ask (korrigieren Sie mich, wenn ich hier falsch liege).

Das Konzept, das mir vorschwebte, ähnelt in gewisser Weise dem 3-Enten-Handelssystem für den Kontrollteil. Bitte beraten Sie mich hier. Vielen Dank!

Mit freundlichen Grüßen

Terrance

mladen:
Es kommt darauf an, welcher:
- aktueller Geldkurs ist Bid

- aktueller Briefkurs ist Ask

- jeder andere Kurs: verwenden Sie den Index Null für den aktuellen Kurs, also ist Close[0] der aktuelle Schlusskurs, Open[0] der aktuelle Eröffnungskurs und so weiter

 

...

Terrance

Verwenden Sie in diesem Fall Close[0]. Fast jeder EA verwendet Close für diesen Zweck, also denke ich, dass es auch bei Ihnen funktionieren wird

tkuan77:
Hallo Mladen, was ich versuche, ist ein Check. Wenn z.B. der aktuelle Kurs über dem SMA 100 liegt, zoome ich auf einen niedrigeren Zeitrahmen herunter und betrachte nur das Kaufsignal. Aber wenn ich Bid oder Ask verwende, kann das System nicht entscheiden, ob ich gerade Long oder Short bin, da ich bei Bid nach Long suchen sollte und umgekehrt bei Ask (korrigieren Sie mich, wenn ich hier falsch liege).

Das Konzept, das mir vorschwebte, ähnelt in gewisser Weise dem 3-Enten-Handelssystem im Kontrollteil. Bitte beraten Sie mich hier. Vielen Dank!

Viele Grüße

Terrance
 

EA läuft nicht zwischen den Preisbewegungen

Ich habe bemerkt, dass mein EA nicht zwischen den Preisbewegungen im M1-Zeitrahmen läuft. Ich weiß, dass EA jeden Tick ausgeführt wird, der hereinkommt.

Aber ich sah es ist ausgeführt wurde jeder es ist Start neue bar.

Bin ich falsch verstanden?

Gibt es die Möglichkeit, die Kraft ea aktivieren jeden Tick kommen in?

Ich versuche, meinen Gewinn und Verlust zu kontrollieren, indem ich Gewinne und Verluste nicht in Pips verwende. Wenn Spike passieren EA nicht schließen, um zu erreichen, um die Einstellung Gewinne oder Verluste, bis neue bar auftreten.

Kann mir jemand helfen, dieses Problem zu lösen.

Ich bin neu in der EA-Codierung.

Ich danke Ihnen im Voraus.