Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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
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.
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?
grazieUsare 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
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
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);
}