Come codificare? - pagina 176

 

Codice Atr decresing?

Atr decresing - qual è il codice mql4?

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

Atr decresing

qual è il codice mql4?

Vorrei che il mio ea non apra posizioni se

l'ATR d1 è > ATR d1 (-1)

 

Come codificare 3 livelli di Trailing Stops

TrailingStop = 50;

TrailingStop_Over100 =30;

TrailingStop_Over150 = 20;

Livello 1: profitto 0-100 pip - TS è 50 pip

Livello 2: 101-150 pip di profitto - TS cambia a 30 pip

Livello 3: 151+ pip di profitto - TS cambia a 20 pip

Come faccio a codificare questo( movimento didirezione positivo ) in modo che il TS cambi quando il profitto in pip aumenta?

Dave

<<<

Apprezzerei davvero la competenza di un codificatore.

 

dopo la prima croce impostare diverse barre di distanza

Ciao a tutti i guru programmatori qui sono un principiante nella programmazione mql4 e mi sono bloccato su un problema,

quindi è il seguente:

Ho 2 EMA 5 e 20 PERIODO_15 e rispettivamente 5 e 20 EMA su PERIODO_H1.

Così, quando entro in una posizione con il primo incrocio PERIODO_M15, l'advisor chiude immediatamente la posizione nella stessa barra se il prezzo si muove nella direzione opposta e fa un incrocio inverso. Questo è programmaticamente corretto, ma il mio problema reale è quello di aspettare le prossime 1-2 o più barre e poi chiudere la posizione se si trova la croce.

Quindi potete aiutarmi a farlo? Se c'è qualche argomento correlato con lo stesso problema, potete mandarmi un link

e i moderatori possono rimuovere il post.

grazie in anticipo!

--se hai già una posizione aperta

--se si verificano troppi incroci

--attendi un po' prima di uscire da questa posizione

--questo dovrebbe risolvere i ripetuti incroci in una barra

if(firstCross == 1)

{

---------------------------//Chiude, controlla se la prossima barra è stata stampata dopo OpenOrderPrise()-----------------------------------

if(openbar <= closebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // posizione di chiusura

return(0); // uscire

}altrimenti

return(0);

}

Bene, ho trovato qualche soluzione inquietante che ho già allegato

Se hai qualche idea di ottimizzazione per lo spostamento temporale o idee di ottimizzazione nel codice a tutti, apprezzerò qualsiasi suggerimento thx in anticipo

File:
 

Ho bisogno del vostro aiuto

Ciao trader,

Apprezzerei molto se qualcuno potesse aiutarmi a sviluppare un allarme per questo indicatore (MT4-LevelStop-Reverse-vB0-3).

Voglio che l'allarme suoni immediatamente la freccia.

Grazie in anticipo.

 
chiwing:
ciao,

uso il vostro lucky v2, e voglio sapere il codice per aggiungere un testo sul grafico che non utilizza l'oggetto--label-->vedi la foto ~~

e l'utente non può cancellare il testo ~ ~

il testo è così: "Your lucky è gratuito e ancora in sviluppo..."

come codificarlo?

grazie

Usare il comando Comment()

Commento - Documentazione MQL4

 

come codificare del testo uneliminateAble sul grafico

ciao,

uso il vostro lucky v2, e voglio sapere il codice per aggiungere del testo sul grafico che non utilizza l'oggetto--label-->vedi la foto ~~

e l'utente non può cancellare il testo ~ ~

il testo è così: "Your lucky v2 EA è gratuito e ancora in sviluppo..."

come codificarlo?

grazie

File:
how_to_code.jpg  134 kb
 

Ordine multiplo e trailing multiplo

Nel mio Ea uso un ordine multiplo, uno a mercato e un altro con limite di acquisto/vendita

Quando ottengo le 3 entrate come nell'esempio voglio che il trailing inizi insieme e lavori insieme

Un esempio

1 entrata a 1.50

2 entrata a 1.4950

3 entrata a 1.4930

il trailing è di 50 punti, ma voglio che inizi quando si raggiunge 1.5050 non prima, se uso il trailing normale quando il prezzo raggiunge 1.5001 la seconda entrata (se viene riempita) inizia a scorrere ma io non lo voglio... voglio che il trailing inizi con 50 pip e tutti allo stesso prezzo quindi a 1.5050

quindi è meglio salvare il biglietto per capire quale ordine uso?

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

 

Si prega di cambiare questo codice EMA

Questo è un codice eccellente di: Coders Guru. Qualcuno può per favore cambiarlo per me. Ho bisogno che chiuda solo le operazioni aperte. Ho creato un sistema che mi dice quando aprire le compravendite e non voglio stare al computer tutto il giorno

per chiudere le compravendite. Grazie Team.

 

Cambia il codice per favore

Calvon:
Questo è un codice eccellente di: Coders Guru. Qualcuno può per favore cambiarlo per me. Ho bisogno che chiuda solo le operazioni aperte. Ho creato un sistema che mi dice quando aprire le compravendite e non voglio stare al computer tutto il giorno per chiudere le compravendite. Grazie Team.

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

//| EMA_6_12.mq4

//| Codificatori Guru ||

//| Forex TSD|Indicatori Metatrader e Consulenti Esperti ||

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

#proprietà copyright "Coders Guru"

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

//---- Include

#include

//---- Limiti di compravendita

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //qualsiasi numero grande

extern double Lots = 1;

extern int Slippage = 5;

//--- Opzioni esterne

extern int CurrentBar = 1;

extern bool UseClose = true;

//--- Impostazioni degli indicatori

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

extern int ShortEma = 4;

extern int LongEma = 8;

//--- Variabili globali

int MagicNumber = 123430;

string ExpertComment = "EMA_4_8

bool LimitPairs = false;

bool LimitFrame = false;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // aggiungi/rimuovi i paris che vuoi limitare.

bool Optimize = false;

int NumberOfTries = 5;

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//ciclo attraverso tutti gli ordini aperti e confronto dei simboli

int totale = OrdiniTotali();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

stringa selected_symbol = OrderSymbol();

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

return (Falso);

}

return (True);

}

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

int Crossed()

{

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); //tendenza alta

if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //tendenza al ribasso

return (0); //altrove

}

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

int start()

{

int cnt, ticket, totale,n;

doppio trend ;

if(Bars<100) {Print("barre meno di 100"); return(0);}

if(LimitFrame)

{

if(Periodo()!=TimeFrame) {Print("Questo EA non funziona con questo TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("Questo EA non funziona con questa valuta!"); return(0);}

}

//--- Condizioni di trading

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

if (Crossed() == 1 )

BuyCondition = false;

se (Incrociato ()== 2 )

SellCondition = false;

se (Incrociato ()== 1)

CloseBuyCondition = true;

se (Incrociato ()== 1)

CloseSellCondition = true;

totale = OrdiniTotali();

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

{

if(BuyCondition) //<-- condizione BUY

{

ticket = OpenOrder(OP_BUY); //<-- Aprire ordine BUY

CheckError(ticket, "BUY");

return(0);

}

if(SellCondition) //<-- Condizione SELL

{

ticket = OpenOrder(OP_SELL); //<-- Aprire ordine SELL

CheckError(ticket, "SELL");

return(0);

}

return(0);

}

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

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

{

if(OrderType()==OP_BUY) //<-- La posizione lunga è aperta

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Chiudi l'ordine e esci!

{

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

}

}

TrailOrder(OrderType()); return(0); //<-- Tracciamento dell'ordine

}

if(OrderType()==OP_SELL) //<-- Passa alla posizione short

{

if(UseClose)

{

if(CloseSellCondition) //<-- Chiudi l'ordine e esci!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Tracciamento dell'ordine

}

}

}

return(0);

}

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

int OpenOrder(int type)

{

int ticket=0;

int err=0;

int c = 0;

se(tipo==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();

se(err==0)

{

break;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Errori di lavoro

{

Sleep(5000);

continua;

}

else //errore normale

{

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();

se(err==0)

{

break;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Errori di lavoro

{

Sleep(5000);

continua;

}

else //errore normale

{

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)

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

}

}

void TrailOrder(int type)

{

se(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

se(tipo==OP_BUY)

{

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

{

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

{

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

}

}

}

if(type==OP_SELL)

{

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

{

se((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(Type + " ordine aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura di " + Tipo + " ordine: ", ErrorDescription(GetLastError());

}

bool AllowedPair(string pair)

{

bool result=false;

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

{

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

{

risultato = vero;

}

}

return (risultato);

}

 
Motivazione: