Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 554
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
splxgf: - Grazie mille! Tutto funziona come un orologio!
Ecco il codice di breakeven di Igor Kim, convertito "splxgf:" invece di punti in percentuali:
//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione: 23.04.2009 |
//| Descrizione: Sposta il livello di stop su lossless |
//+----------------------------------------------------------------------------+
//| Parametri: |
//| sy - nome dello strumento ( "" - qualsiasi simbolo, |
//| NULL - simbolo corrente) |
//| op - operazione ( -1 - qualsiasi posizione) |
//| mn - MagicNumber ( -1 - qualsiasi mago) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy=NULL, int op=-1, int mn=-1) {
double po, pp, PercentStep,MoveStoplossLevel,StoplossLevel;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT);
se (OrderType()==OP_BUY) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() + PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() + PercentStep*(51-23);
if (OrderStopLoss()-OrderOpenPrice()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
if (pp-OrderOpenPrice()>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()+StoplossLevel*po, -1);
}
}
}
if (OrderType()==OP_SELL) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() - PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() - PercentStep*(51-23)
if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pp>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()-StoplossLevel*po, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+
Cifre:
138 è il takeprofit in % Fibonacci.
23 è il prezzo aperto dell'ordine in % Fibonacci
76 è la % della griglia di Fibonacci, se il prezzo raggiunge questo valore, lo stop loss sarà spostato al 51% della griglia di Fibonacci.
Funzione di e-MovingInWL2 Expert Advisor.
{
Trailing();
double Line11=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 1);
double Line12=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 2);
double Line21=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 5, 1);
if (timeprev == Time[0]) return(0);
timeprev = Time[0];
ma0=iMA(NULL,0,10,0,MODE_SMA,PRICE_CLOSE,1);
ma1=iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,1);
ma2=iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,1);
ma3=iMA(NULL,0,800,0,MODE_SMA,PRICE_CLOSE,1);
if (CountBuy()>5 && Volume[0]==1 && Ask > ma0 && Ask > ma1 && Ask > ma3)
{
if (Line11>Level1&&Line12<Level1&&Line11>Line12)
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask-sl*Point, Ask+tp*Point, comment, Magic, 0, Blue);
}
if (CountSell()>5 && Volume[0]==1 && Bid < ma0 && Bid < ma1 && Ask < ma3)
{
if (Line11>Level2&&Line12>Level1&&Line11>Line12)
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask+sl*Point,Ask-tp*Point, comment, Magic, 0, Red);
}
return(0);
}
Si prega di aiutare a trovare un errore nel codice con il segnale di apertura degli ordini da parte dell'indicatore TDI Red Green.
Il tester non apre accordi, o ne apre solo uno. Non segnala alcun errore.
Ho indicato correttamente i buffer dell'indicatore.
Sto imparando mql4 da pochi giorni, sono un principiante)))
Vi ringrazio in anticipo per l'aiuto!Il parametro N in esso è variabile, il che significa che ogni volta che viene cambiato, il codice deve essere rielaborato aggiungendo (o rimuovendo) condizioni "if" (sotto l'array corrispondente).
Domanda - è possibile usare solo un "se", ma usare la variabile "to" nei nomi degli array (o qualcos'altro)? Cioè qualcosa come ARRAY_{k}. So che possiamo sostituire gli array con variabili terminali, ma questo è un caso estremo. Esiste una tale soluzione per gli array?
Ho affrontato questo dilemma: diciamo che c'è un loop-for:
Il parametro N in esso è variabile, il che significa che ogni volta che lo cambiate, dovete modificare il codice aggiungendo (o cancellando) condizioni "if" (sotto l'array corrispondente).
Domanda - è possibile usare solo un "se", ma usare la variabile "to" nei nomi degli array (o qualcos'altro)? Cioè qualcosa come ARRAY_{k}. So che possiamo sostituire gli array con variabili terminali, ma questo è un caso estremo. Esiste una tale soluzione per gli array?
Si può se è in qualche modo simile:
Si può se è in qualche modo simile:
Può descrivere a parole cosa si intendeva?
Puoi descrivere a parole cosa si intendeva?
Scusa, mi sono distratto.
L'indice dell'array è reso parte dell'identificatore.
Ecco un semplice codice.
Voglio che il programma tracci una linea verticale su OGNI cinquantesima candela.
il programma disegnerà una linea verticale.
IL PROBLEMA È.
Il programma presenta una linea verticale SOLO SULLA PRIMA CORONA (multiplo di 50).
Grazie.
L'indice dell'array è reso parte dell'identificatore.
Per quanto ho capito la tua soluzione non funzionerà nel mio caso, ma mi ha dato un'idea che vale la pena di verificare. Grazie!
Ecco un semplice codice.
Lo voglio su OGNI cinquantesima candela.
il programma esponeva una linea verticale.
PROBLEMA
Il programma imposta una linea verticale SOLO sulla PRIMA LINEA (multiplo di 50).
Voglio che sia lo stesso nome per ogni cinquantesima candela.
Stai cercando di creare diversi oggetti con lo stesso nome e questo non è possibile. Il nome deve essere unico, come il tempo:
Questo è prima di tutto. In secondo luogo, dov'è il loop? Come farà lo script a contare le candele?