Chiedete! - pagina 16

 

un paio di problemi in più

1. una delle cose che ho notato nei risultati è che se viene aperto un trade, non ne apre un altro fino a quando il trade precedente non è completo, avete un modo per cambiare questo? fare trade sovrapposti?

(per favore pubblica un secondo file con i trade sovrapposti se puoi, ho ancora bisogno di testarli entrambi)

2. domanda semplice,

se il tester non mostra risultati quando si inserisce un bilancio iniziale di 500 o 1000, ma lo fa su 3.000 o superiore, cosa significa esattamente, (significa che si va in bancarotta sulle operazioni con un bilancio iniziale così basso?)

 

Come si esce dal loop?

Ho aggiunto alcuni dei miei avvisi e finalmente ho avuto un po' di successo, ma molte volte mi ritrovo in un loop di avvisi che non finisce mai e l'unico modo per interromperlo è forzare la chiusura di MT4, come posso inserire una pausa, o c'è una pausa da tastiera che posso usare?

Grazie per qualsiasi aiuto con le mie domande di base

 

Potresti/potresti mostrarmi questo...

la programmazione mi confonde ancora...

Mi chiedo se potreste guidarmi attraverso qualcosa di molto semplice e mostrarmi come dovrebbe essere il codice per far sì che questo accada...

due medie mobili si incrociano... inserisce un ordine con un trailing stop...

//---- input parameters

extern double lots=1.0;

extern int MA1=1;

extern int MA2=5;

extern int trailingstop=8;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//----

return(0);

}

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

Ho usato questa utility e ho creato questo....

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

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

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

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0;

extern int Slippage = 0;

extern bool StopLossMode = False;

extern int StopLoss = 10;

extern bool TakeProfitMode = False;

extern int TakeProfit = 8;

extern bool TrailingStopMode = True;

extern int TrailingStop = 10;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

double Buy1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Buy1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Sell1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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

//| Variable End |

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

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;

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

//| Signal End |

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

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

Il problema è che quando viene eseguito nello strategy tester non dà alcun risultato.

 

Oh, l'ho capito! grazie mille per il tuo tutorial

 
skorcht:
Ho due semplici domande, credo...

Come posso fare in modo che le candele heiken ashi abbiano uno spessore predefinito di 5 invece che di 3?

Inoltre, come posso fare un segno sopra o sotto la candela a seconda del valore di un indicatore RSI?

Ne capisco un po' di programmazione ma non conosco la sintassi di questo...quindi fate come se non sapessi nulla

Grazie mille...se scopro qualcosa, la posterò

PS quel costruttore di expert advisor è NIZZA, c'è anche un costruttore di INDICATORI? sarebbe fantastico

Ho sistemato solo l'Heiken Ashi.

File:
 

Nuovo - Domande - Bisogno di aiuto

Sono nuovo in questo forum. Vorrei sapere se qualcuno può darmi qualche informazione sul valore della Sezione Elite (a parte il discorso di vendita con praticamente nessuna informazione nel link sopra).

Ho anche cercato di inviare una domanda dalla pagina web a cui mi ha portato il link sopra, ma il modulo continua a mostrare che uno dei campi è vuoto. Quel campo è il campo Priorità e non c'è niente nella casella a discesa (è tutto vuoto) e non c'è modo per me di avere un valore in quel campo. Quindi, non posso inviare alcuna domanda in quel modo.

DD

 

Qualcun altro ha sperimentato questo? Sto facendo il backtesting del mio sistema usando i dati alpari, otterrei l'errore 4107 prezzo non valido e 131 volume non valido. Il 4107 è stato generato perché il prezzo che ottiene è come 4 cifre decimali più della coppia di valute. Sono sorpreso di ottenere 4107 poiché il prezzo che passo a OrderSend() è il Bid e Ask predefinito. Ho anche aggiunto un Comment(Bid, " ", Ask); prima di OrderSend() per vedere cosa Bid e Ask stavano restituendo. E sul Comment() era la precisione decimale corretta, tuttavia OrderSend() generava ancora l'errore. Ho finito per assegnare il valore di Bid/Ask a una variabile e usare NormalizeDouble() sulla variabile per poi passarla a OrderSend() e questo funziona.

Tuttavia, ottengo ancora il 131 e non conosco un workaround per questo.

PipChick, personalmente non credo che valga la pena entrare nella sezione elite.

 

Novizio.

Conosco un po' di c++ ma sto lottando con del codice molto semplice.

Cosa voglio:

Il prezzo è 1,2788. Se si muove fino a 10 pip voglio comprare. Se si muove verso il basso di 10 pips voglio vendere.

Ho il codice giusto?

OrderSend(Symbol(),OP_BUYSTOP,1,Ask+10*Point,slippage,

(Ask+10*Point)-10*Point,

( Ask+10*Point)+200*Point, "Il mio commento all'ordine",0,0,verde);

OrderSend(Symbol(),OP_SELLSTOP,1,Bid-10*Point,slippage,

(Bid-10*Point)+10*Point,

(Bid -10*Point)-200*Point, "Il mio commento all'ordine",0,0,Verde);

Ho letto http://www.metatrader.info/node/34 ma mi sono perso. Grazie per la vostra pazienza.

 

Ciao,

Il mio problema: MT3,

Non funziona. Perché?

Grazie, Bongo

sell=false;

comprare=falso;

se ((C[1]>O[1])<O[0]) allora { compra=vero; vendi=falso; }

se ((C[1]O[0]) allora { vendi=vero; compra=falso; }

Motivazione: