Wie programmiert man? - Seite 176

 

Atr decresing code ??

Atr decresing - wie lautet der Code mql4 ?

--------------------------------------------------------------------------------

Atr decresing

Was ist der Code mql4 ?

Ich möchte, dass mein ea keine Positionen öffnet, wenn

die ATR d1 ist > ATR d1 (-1)

 

So codieren Sie 3 Ebenen von Trailing Stops

TrailingStop = 50;

TrailingStop_Over100 =30;

TrailingStop_Über150 = 20;

Level 1: 0-100 Pip Gewinn - TS ist 50 Pips

Level 2: 101-150 Pip Gewinn - TS ändert sich auf 30 Pips

Level 3: 151+ Pip Gewinn - TS ändert sich auf 20 Pips

Wie kodiere ich dies( Bewegungin positiver Richtung ), so dass der TS sich ändert, sobald der Pip-Gewinn steigt?

Dave

<<<

Wäre wirklich dankbar für die Expertise eines Programmierers.

 

nach erstem Kreuz mehrere Balken Abstand setzen

Hallo an alle Programmierer-Gurus hier ich bin ein Neuling in der mql4 Programmierung und ich stecke bei einem Problem fest,

also es ist das folgende :

Ich habe 2 EMA 5 und 20 PERIOD_15 und jeweils 5 und 20 EMA auf PERIOD_H1.

Wenn ich also eine Position mit dem ersten Kreuz PERIOD_M15 eingebe, schliesst der Advisor die Position sofort im gleichen Takt, wenn sich der Kurs in die andere Richtung bewegt und ein umgekehrtes Kreuz macht. Das ist programmtechnisch korrekt, aber mein eigentliches Problem ist es, die nächsten 1-2 oder mehr Balken abzuwarten und dann die Position zu schließen, wenn ein Cross gefunden wurde.

Können Sie mir dabei helfen? Wenn es hier ein verwandtes Thema mit dem gleichen Problem gibt, können Sie mir einen Link schicken

und die Moderatoren können den Beitrag entfernen.

Vielen Dank im Voraus!!

-- wenn Sie bereits eine offene Position haben

-- wenn zu viele Kreuzungen auftreten

-- warten Sie ein wenig, bevor Sie diese Position verlassen

--das sollte die wiederholten Crosses in einem Bar lösen

if(firstCross == 1)

{

---------------------------//Close, prüfen, ob nach OpenOrderPrise()----------------------------------- mehrere nächste Bar's gedruckt werden

if(openbar <= closebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // Position schließen

return(0); // exit

}andernfalls

return(0);

}

Nun, ich habe eine gruselige Lösung gefunden , die ich bereits angehängt habe

Wenn Sie einige Ideen zur Optimierung der Zeitverschiebung oder zur Optimierung des Codes haben, bin ich für jeden Vorschlag dankbar, thx im Voraus

Dateien:
 

Brauche Ihre Hilfe

Hallo Trader,

Ich würde es sehr schätzen, wenn mir jemand helfen kann, einen Alarm für diesen Indikator (MT4-LevelStop-Reverse-vB0-3) zu entwickeln.

Ich möchte, dass der Alarm klingelt, sobald der Pfeil auftaucht.

Vielen Dank im Voraus.

 
chiwing:
Hallo,

Ich benutze Ihr Glück v2, und wollen den Code des Hinzufügens von Text auf dem Diagramm, die nicht mit dem Objekt-Label-->siehe das Bild ~~ wissen

und der Benutzer kann den Text nicht löschen~ ~

Der Text sieht so aus: "Ihr Glück ist kostenlos und noch in der Entwicklung..."

Wie kann man das codieren?

danke

Verwenden Sie den Befehl Comment()

Kommentar - MQL4 Dokumentation

 

wie man uneliminateAble-Text im Diagramm codiert

Hallo,

ich benutze Ihr Lucky v2, und möchte den Code für das Hinzufügen von Text auf dem Diagramm wissen, der nicht das Objekt-Label verwendet-->siehe das Bild ~~

und der Benutzer kann den Text nicht löschen~ ~

der Text ist so--"Your lucky v2 EA ist kostenlos und noch in der Entwicklung..."

wie kann man das codieren?

Danke

Dateien:
how_to_code.jpg  134 kb
 

Mehrere Aufträge und mehrere Trailing-Aufträge

In meiner Ea verwende ich mehrere Aufträge, einen zum Markt und einen mit Kauf/Verkaufslimit.

Wenn ich die 3 Einträge wie im Beispiel erhalte, möchte ich, dass das Trailing zusammen startet und zusammen arbeitet.

Ein Beispiel

1 Einstieg bei 1,50

2Eintrag bei 1.4950

3 Einträge bei 1,4930

das Trailing beträgt 50 Punkte, aber ich möchte, dass es bei 1.5050 beginnt, nicht vorher, wenn ich normales Trailing verwende, wenn der Preis 1.5001 erreicht, beginnt der zweite Eintrag (wenn er gefüllt ist) zu trailen, aber das möchte ich nicht... ich möchte, dass das Trailing mit 50 Pip beginnt und alle zum gleichen Preis, also bei 1.5050

Ist es also besser, das Ticket zu speichern, um zu wissen, welche Order ich verwenden soll?

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);

LastClosedBar = Time[0];

RefreshRates();

OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

entratalong= OrderOpenPrice( );

ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //

ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //

[/CODE]

Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!

[CODE]

int TrailStop ()

{

int cnt,result,total=OrdersTotal();

double gain2=Lots_2ingresso;

double gain3=Lots_2ingresso;

int ticket,ticket2,ticket3;

for(cnt = total-1; cnt >= 0; cnt--)

{

RefreshRates();

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))

{

if (OrderType()==OP_BUY && OrderTicket()==ticket )

{

if(Bid - OrderOpenPrice() > Point * TrailingStop )

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

for(cnt = total-1; cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )

result =OrderDelete(OrderTicket());

}

Alert("sta facendo trail");

}

}

}

// trailing 2 parte X pip dopo

if (OrderType()==OP_BUY && OrderTicket()==ticket2)

{

if(Bid - OrderOpenPrice() > Point * Trailing2)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}

// trailing 3 parte X pip dopo

if (OrderType()==OP_BUY )

{

if(Bid - OrderOpenPrice() > Point * Trailing3)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}// fine trailing

 

Bitte ändern Sie diesen Code EMA

Dies ist ein ausgezeichneter Code von: Coders Guru. Kann ihn bitte jemand für mich ändern. Ich brauche es, um nur CLOSE die offenen Trades. Ich habe ein System erstellt, das mir sagt, wann ich ein Geschäft eröffnen soll, und ich möchte nicht den ganzen Tag am Computer sitzen

um Handelsgeschäfte zu schließen. Danke Team.

 

Bitte ändern Sie den Code

Calvon:
Dies ist ein ausgezeichneter Code von: Coders Guru. Kann ihn bitte jemand für mich ändern. Ich brauche es, um nur die offenen Trades zu schließen. Ich habe ein System entwickelt, das mir sagt, wann ich ein Geschäft eröffnen soll, und ich möchte nicht den ganzen Tag am Computer sitzen, um Geschäfte zu schließen. Danke Team.

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

//| EMA_6_12.mq4 |

//| Coders Guru |

//| Forex TSD| Metatrader Indikatoren und Experten Advisors |

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

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Includes

#include

//---- Handelsgrenzen

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //beliebig große Zahl

extern double Lots = 1;

extern int Slippage = 5;

//--- Externe Optionen

extern int AktuellerBalken = 1;

extern bool UseClose = true;

//--- Einstellungen der Indikatoren

extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */

extern int ShortEma = 4;

extern int LongEma = 8;

//--- Globale Variablen

int MagischeZahl = 123430;

string Expertenkommentar = "EMA_4_8";

bool LimitPairs = false;

bool LimitFrame = false;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // Hinzufügen/Entfernen der zu begrenzenden Paare.

bool Optimieren = false;

int NumberOfTries = 5;

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

bool isNewSymbol(string aktuelles_symbol)

{

//Schleife durch alle geöffneten Aufträge und Vergleich der Symbole

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

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

int Gekreuzt()

{

double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar);

double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar);

if (EmaShortPreviousEmaLongCurrent ) return (1); //Aufwärtstrend

if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //Abwärtstrend

return (0); //anderswo

}

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

int start()

{

int cnt, ticket, total,n;

double trend ;

if(Bars<100) {Print("bars less than 100"); return(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("Dieser EA funktioniert nicht mit diesem TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Drucke("Dieser EA funktioniert nicht mit dieser Währung!"); return(0);}

}

//--- Handelsbedingungen

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Gekreuzt() == 1 )

BuyCondition = falsch;

wenn (Gekreuzt ()== 2 )

SellCondition = false;

wenn (Gekreuzt ()== 1)

CloseBuyCondition = wahr;

wenn (Gekreuzt ()== 1)

CloseSellCondition = wahr;

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- BUY condition

{

ticket = OpenOrder(OP_BUY); //<-- BUY-Order öffnen

CheckError(ticket, "BUY");

return(0);

}

if(SellCondition) //<-- SELL Bedingung

{

ticket = OpenOrder(OP_SELL); //<-- SELL-Order öffnen

CheckError(ticket, "SELL");

return(0);

}

return(0);

}

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Long-Position wird eröffnet

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Schließen Sie die Order und steigen Sie aus!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen

}

if(OrderType()==OP_SELL) //<-- Auf Short-Position gehen

{

if(UseClose)

{

if(CloseSellCondition) //<-- Die Order schließen und aussteigen!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Die Order nachverfolgen

}

}

}

return(0);

}

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

int OpenOrder(int type)

{

int ticket=0;

int err=0;

int c = 0;

if(typ==OP_BUY)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);

err=GetLastError();

if(err==0)

{

break;

}

sonst

{

if(err==4 || err==137 ||err==146 || err==136) //Busy-Fehler

{

Sleep(5000);

weiter;

}

sonst //normaler Fehler

{

break;

}

}

}

}

if(type==OP_SELL)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);

err=GetLastError();

if(err==0)

{

break;

}

sonst

{

if(err==4 || err==137 ||err==146 || err==136) //Busy-Fehler

{

Sleep(5000);

weiter;

}

sonst //normaler Fehler

{

break;

}

}

}

}

return(ticket);

}

bool CloseOrder(int type)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));

if(type==OP_SELL)

return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet));

}

}

void TrailOrder(int type)

{

if(NachlaufenderStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

}

}

}

}

}

}

void CheckError(int ticket, string Type)

{

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Typ + " Auftrag eröffnet : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen von " + Type + " order : ", ErrorDescription(GetLastError()));

}

bool AllowedPair(string pair)

{

bool Ergebnis=false;

for (int n = 0 ; n < ArraySize(LP); n++)

{

if(Symbol() == LP[n])

{

Ergebnis = true;

}

}

return (Ergebnis);

}

 
Grund der Beschwerde: