int digits = (int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // number of decimal placesdouble point = SymbolInfoDouble(_Symbol,SYMBOL_POINT); // pointdouble ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK); // current price for closing SHORTdouble SL = ask-_SL*point; // unnormalized SL value
SL = NormalizeDouble(SL,digits); // normalizing Stop Lossdouble TP = ask+_TP*point; // unnormalized TP value
TP = NormalizeDouble(TP,digits); // normalizing Take Profitdouble open_price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
if(!trade.Buy(Volume,_Symbol,open_price,SL,TP,""))
{
//--- failure messagePrint("Sell() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
return (false);
}
else
{
Print("Sell() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
Per favore ditemi, perché nel tester di strategia non imposto stop loss e profitto e apro solo la posizione al prezzo di mercato?
Sto usando CTrade (trade.Buy) per aprire una posizione.
Ho provato ad aprirlo con (trade.PositionOpen), la stessa cosa, si apre e mette stop su demo, gli stop sono 0 nello Strategy Tester, non so quale possa essere il problema.
Salve, cari programmatori. Penso che i programmatori siano come degli dei - creare qualcosa che funziona dal nulla, dal nulla e creare cose materiali è semplicemente fantastico... Ho letto un articolo sul tempo, ma non dice nulla sull'impostare una periodicità, nemmeno la periodicità, ma l'attivazione e la disattivazione di un Expert Advisor in determinati momenti. Non so se qualcuno ha mai fatto questa domanda. Devo rinominare il mio EA per avviare e fermare in momenti diversi, ma poiché MT5 ha solo una coppia - un EA, devo passare da uno all'altro manualmente. Grazie
Основное правило трейдера - дай прибыли расти, обрезай убытки! В статье рассматривается один из основных технических приемов, позволяющий следовать этому правилу - перемещение уровня защитной остановки (уровня Stoploss) вслед за растущей прибылью позиции, другими словами - скользящий стоп или трейлинг стоп (trailingstop). Приводится пошаговая процедура создания класса для трейлинг стопа на индикаторах SAR и NRTR, который каждый желающий сможет за 5 минут встроить в своего эксперта или использовать независимо для управления позициями на своем счете.
Ho impostato le trailing bar, ma non si attivano e disattivano al momento giusto, e non tengono conto dell'inversione. L'idea è la seguente: dopo il trailing stop, di solito alla fine di un periodo, per esempio un'ora o 15 minuti, aspettare qualche minuto e lasciare che si riaccenda e determinare il layout dall'indicatore e passare allo stop successivo...:-))))
Sto cercando di fare la media di uno scambio. Ma nei parametri.
PositionModify(Symbol,SL,ТР)
Non posso determinare il prezzo di apertura perché ottengo il prezzo di apertura e voglio il prezzo che è stato spostato come risultato della media.
O solo attraverso la cronologia degli ordini per scoprire il prezzo del primo e del secondo ordine e già sulla base di questi dati per essere mediato, non voglio questo modo è troppo complicato per me!
datetime end=TimeCurrent(); // текущее серверное времяdatetime start=end-PeriodSeconds(PERIOD_D1);// установим начало на сутки назад//--- запросим в кэш программы нужный интервал торговой историиHistorySelect(start,end);
//--- получим количество сделок в историиint deals=HistoryDealsTotal();
//--- получим тикет сделки, имеющей последний индекс в спискеulong deal_ticket=HistoryDealGetTicket(deals-1);
if(deal_ticket>0) // получили в кэш сделку, работаем с ней
{
//--- тикет ордера, на основании которого была проведена сделкаulong order =HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
long order_magic=HistoryDealGetInteger(deal_ticket,DEAL_MAGIC);
long pos_ID =HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
double priceh =HistoryDealGetInteger(deal_ticket,DEAL_PRICE); // не могу определить цену открытия
PrintFormat("Сделка #%d по ордеру #%d с ORDER_MAGIC=%d участвовала в позиции %d",
deals-1,order,order_magic,pos_ID);
}
else// неудачная попытка получения сделки
{
PrintFormat("Всего в истории %d сделок, не удалось выбрать сделку"+
" с индексом %d. Ошибка %d",deals,deals-1,GetLastError());
}
//--- получим общее количество позицийint positions=PositionsTotal();
//--- пробежим по списку ордеровfor(int i=0;i<positions;i++)
{
ResetLastError();
//--- скопируем в кэш позицию по ее номеру в спискеstring symbol=PositionGetSymbol(i); // попутно получим имя символа, по которому открыта позицияif(symbol!="") // позицию скопировали в кэш, работаем с ней
{
long pos_id =PositionGetInteger(POSITION_IDENTIFIER);
double price =PositionGetDouble(POSITION_PRICE_OPEN);
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
long pos_magic =PositionGetInteger(POSITION_MAGIC);
string comment =PositionGetString(POSITION_COMMENT);
if(pos_magic==EA_Magic)
{
PositionModify(Symbol(),NormalizeDouble(( - StopLoss*_Point),4),
NormalizeDouble(( + TakeProfit*_Point),4)); // ну здесь еще через запрос в зависимости от типа ордера
}
PrintFormat("Позиция #%d по %s: POSITION_MAGIC=%d, цена=%G, тип=%s, комментарий=%s",
pos_id,symbol,pos_magic,price,EnumToString(type),comment);
}
else// вызов PositionGetSymbol() завершился неудачно
{
PrintFormat("Ошибка при получении в кэш позиции c индексом %d."+
" Код ошибки: %d", i, GetLastError());
}
}
Cari signori, aiutatemi!!! Già scoraggiarsi all'ultimo passo, da una strategia già pronta. Non può fare la media di uno scambio, attraverso
Cercando di fare la media di uno scambio. Ma nei parametri.
Non posso determinare il prezzo di apertura perché ottengo il prezzo di apertura e voglio il prezzo che è stato spostato come risultato della media.
Oppure solo attraverso la cronologia degli ordini per scoprire il prezzo del primo e del secondo ordine e già sulla base di questi dati per essere mediato, non voglio questo modo è troppo complicato per me!
Dovresti prima elaborare un algoritmo di mediazione manuale. Ora avete un valore negativo di stoploss, e dovreste avere il prezzo effettivo di stoploss. Dovresti impostare questi parametri secondo il tuo algoritmo di mediazione.
La variabile era di tipo extern, ora è input, ma è già una costante, extern non viene visualizzato nel menu indicatore ora. È possibile fare come prima o è necessario creare variabili aggiuntive per poter cambiare questi valori?
Per esempio, abbiamo un EA con l'evento OnTick, che aprirà o chiuderà una posizione a seconda delle condizioni. Puoi testare l'EA nel tester di strategia dove puoi impostare il timeframe. Non vedo come siano collegati. L'EA non è testato nello Strategy Tester, dove reagisce ad ogni tick? O reagisce solo al timeframe selezionato nello Strategy Tester? Spero che questa domanda sia chiara
Per favore ditemi, perché nel tester di strategia non imposto stop loss e profitto e apro solo la posizione al prezzo di mercato?
Sto usando CTrade (trade.Buy) per aprire una posizione.
Ho provato ad aprirlo con (trade.PositionOpen), la stessa cosa, si apre e mette stop su demo, gli stop sono 0 nello Strategy Tester, non so quale possa essere il problema.
Capisco che posso farlo manualmente, ma ho bisogno di un robot per farlo.
Come posso creare una funzione per modificare un ordine?
https://www.mql5.com/ru/articles/134
Ciao, puoi dirmi se c'è una differenza per un EA: un deposito minimo di 1000& (conto in dollari) o 1000 rubli (conto in rubli)?
Cari signori, aiutatemi!!! Già scoraggiarsi all'ultimo passo, da una strategia già pronta. Non può fare la media di uno scambio, attraverso
Sto cercando di fare la media di uno scambio. Ma nei parametri.
Non posso determinare il prezzo di apertura perché ottengo il prezzo di apertura e voglio il prezzo che è stato spostato come risultato della media.
O solo attraverso la cronologia degli ordini per scoprire il prezzo del primo e del secondo ordine e già sulla base di questi dati per essere mediato, non voglio questo modo è troppo complicato per me!
Cari signori, aiutatemi!!! Già scoraggiarsi all'ultimo passo, da una strategia già pronta. Non può fare la media di uno scambio, attraverso
Cercando di fare la media di uno scambio. Ma nei parametri.
Non posso determinare il prezzo di apertura perché ottengo il prezzo di apertura e voglio il prezzo che è stato spostato come risultato della media.
Oppure solo attraverso la cronologia degli ordini per scoprire il prezzo del primo e del secondo ordine e già sulla base di questi dati per essere mediato, non voglio questo modo è troppo complicato per me!
Ciao, per favore chiarisci una cosa.
Per esempio, abbiamo un EA con l'evento OnTick, che aprirà o chiuderà una posizione a seconda delle condizioni. Puoi testare l'EA nel tester di strategia dove puoi impostare il timeframe. Non vedo come siano collegati. L'EA non è testato nello Strategy Tester, dove reagisce ad ogni tick? O reagisce solo al timeframe selezionato nello Strategy Tester? Spero che questa domanda sia chiara