Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нужна помощь в редактировании части EuroX2_sl EA .......
Привет всем программистам,
Я новичок в торговле на форекс и новичок на этом форуме тоже. Первый раз, я изучаю 10 пунктов 3, затем, EuroX2_sl, расширенный из 10 пунктов 3 EA скрипт. После того, как я сделал несколько форвард-тестов, для меня этот советник вполне подходит для новичков, как я, чтобы учиться. При форвард-тесте он хорошо открывал позицию, но не закрывал ее, как мне нужно (даже если я уже выполнил условие), когда рынок разворачивался или когда тренд менялся. Возможно, что-то не так с кодом (потому что я не программист), и я думаю, что мне нужна помощь любого из вас, чтобы решить эту проблему. Не могли бы вы проверить, какая часть кода может быть неправильной?
Я думаю, что позиция OPEN в порядке, так как она приносит прибыль, но проблема в позиции CLOSE, так как она не закрывается (BUY или SELL), даже когда индикатор существует, и это делает плавающие потери довольно большими.
Любой, кто знает об этом, пожалуйста, помогите мне отредактировать этот код........
Код, как я сделал это :
-------- часть скрипта из EuroX2_sl расширена с 10 пунктов до 3, как я думаю, для закрытия позиции -------
//+--------------------------------------------------------
// важно правильно войти в рынок,
// но еще важнее правильно выйти из него...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // проверяем наличие открытой позиции
OrderType()<=OP_BUY &&
OrderType()>=OP_SELL &&
OrderType()>=OP_BUY &&
OrderSymbol()==Symbol()) // проверка наличия символа
{
//+--------------------------------------------------------------
if(OrderType()==OP_BUY) // открыта длинная позиция
{
//+-------------------------------------------------------------------
//+ УСЛОВИЕ ДЛЯ ЗАКРЫТИЯ ПОЗИЦИИ
//+-------------------------------------------------------------------
//+--------------- ЗАКРЫТЬ ПОЗИЦИЮ НА ПОКУПКУ ----------------------------
if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )
//+ основной стохастик < стохастический сигнал
//+------------------------------------------------------------------
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // закрываем позицию
return(0); // выход
}
//+-----------------------------------------------------------------------
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
//+---------------CLOSE SELL POSITION --------------------------------
else // переходим в короткую позицию
{ //+ НЕ УДАЛЯТЬ
if(OrderType()==OP_SELL) // открыта короткая позиция
{
}
// следует ли ее закрыть?
//+----------------------------------------------------------------------------
if ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )
//+ стохастический основной > стохастический сигнал
//+-----------------------------------------------------------------------------
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // закрываем позицию
return(0); // выход
}
//+----------------------------------------
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
--------------------------------------------------------------
Спасибо,
fxgroup
Какие лучшие недельные/дневные срочные индикаторы
Этот вопрос может быть адресован опытным трейдерам.
Какие надежные (уже проверенные) индикаторы могут дать нам представление об основном движении тренда во время:
1- будущей недели
2- Будущий день (или следующий день)
Зная, что я не спрашиваю об уровнях входа B/S.
Примечание: Я думаю, что как только мы определим направление движения на следующей неделе, мы сможем построить базу для входа.
Спасибо
вопрос по mql
Код:
// если у нас есть открытые позиции, мы заботимся о них.
// с модификацией стоплосса
cnt=OrdersTotal();
while(cnt>=0)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)
{
Print("Ticket ",OrderTicket()," modified.");// почему здесь написано перед модификацией ордеров (как я понимаю)?
if (OrderType()==OP_SELL)
{
если (TrailingStop>0){
if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))
{
if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);
return(0);
Здравствуйте всем, кто-нибудь может мне объяснить, почему :Print("Ticket ",OrderTicket()," modified."); пишется перед модификацией ордера. Как я понимаю, он выведет"билет заказа изменен", даже если он не был изменен. Это кусок кода терминатора.
Спасибо.
Код:
// если у нас есть открытые позиции, то мы заботимся о них
// с модификацией стоплосса
cnt=OrdersTotal();
while(cnt>=0)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)
{
Print("Ticket ",OrderTicket()," modified.");// почему здесь написано перед модификацией ордеров (как я понимаю)?
if (OrderType()==OP_SELL)
{
если (TrailingStop>0){
if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))
{
if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);
return(0);
Здравствуйте всем, кто-нибудь может мне объяснить, почему :Print("Ticket ",OrderTicket()," modified."); пишется перед модификацией ордера. Как я понимаю, он выведет "билет заказа изменен", даже если он не был изменен. Это кусок кода-терминатора.
Спасибо.Вы правы, нужно писать после модификации или сообщение должно быть : "Пытаюсь модифицировать заказ: ",OrderTicket()
спасибо Калензо, я изучаю mql и ваши статьи и ответы очень полезны, спасибо еще раз.
Возможно, будет достаточно, если вы выполните следующие четыре правки:
1. Закомментировать строку 102, чтобы было
2. Change blank line 104 to be
3. Change blank line 120 to be
[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;4. Добавить переменную "GAP" (extern int), которая представляет собой заданное количество пунктов, на которых следует "хеджировать".
Хотя, кто-то уже отмечал на этом форуме, что на самом деле нельзя "хеджировать" на одном и том же символе; это практически то же самое, что взять убыток. Возможно, лучше взять убыток, а затем вернуться, когда цена снова развернется.....
Возможно, будет достаточно, если вы выполните следующие четыре правки:
1. Закомментировать строку 102, чтобы было
2. Change blank line 104 to be
3. Change blank line 120 to be
[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;4. Добавьте переменную "GAP" (extern int), которая представляет собой заданное количество пунктов, на которые должен прийти "хедж".
Хотя, кто-то уже указывал на этом форуме, что вы не можете действительно "хеджировать" в том же символе; это практически то же самое, что принять убыток. Возможно, лучше взять убыток, а затем вернуться, когда цена снова развернется.....Не помогло. И, чтобы быть более конкретным, я хочу, чтобы мой советник делал следующее:
Советник будет заключать сделки на покупку/продажу, основываясь на определенных условиях. После того, как начальная сделка заключена, иногда может пройти от трех до пяти дней, прежде чем она окончательно закроется по тейк-профиту. Между тем, в течение этого трех-пятидневного периода может возникнуть несколько торговых возможностей в противоположном направлении. Я хочу, чтобы советник воспользовался этими возможностями, оставив первоначальную сделку открытой, поскольку в конечном итоге она закроется с прибылью. Эти дополнительные торговые возможности в направлении, противоположном первоначальной сделке, технически будут хеджировать первоначальную сделку, хотя в конечном итоге они также закроются по тейк-профиту. Для ясности, я все же хочу, чтобы советник имел только одну открытую сделку в том же направлении. Таким образом, максимум сделок, открытых в одно и то же время, - это одна покупка и одна продажа.
Надеюсь, это поможет!
Спасибо за ваш ответ
Хм; я не тестировал ваш советник, но, читая логику, мне кажется, что единственное, что останавливает последующую продажу после покупки, это то, что "IsTrade" истинно. (За исключением того, что он не откроет продажу в то же самое время, когда он открывает покупку).
Поэтому, если вы хотите, чтобы логика продажи применялась безоговорочно, я бы подумал, что только моя правка (1) - забудьте о 2-4 - будет работать. Или удалите логику "IsTrade".
Правда, есть подчиненная логика с "TickCheck" и "BarCount", которая останавливает другую сделку на том же тике или на том же баре, но я предполагаю, что вы хотите, чтобы она все еще применялась.
Конечно, я не могу много сказать о сигнальной части, которую вы опустили. Например, если поднятие сигнала "Sell_Signal" учитывает "BuyOrders", то это еще не все.
Сделайте кодирование интересным
Прежде чем нажать BACK, помогите мне, пожалуйста.
Я новичок в кодировании индикаторов, но я знаю, как кодировать советников. Не на 100%, но достаточно хорошо.
В любом случае, мне интересно, поможет ли мне кто-нибудь добрый.
Объясните мне, пожалуйста, каждую строчку и приведите пример.
p.s. Это часть кода для MACD:
{
int limit;//what does Limit equal,0?
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)//i<0?
MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+Я буду очень рад, если кто-то или несколько человек помогут мне, дадут подсказки по кодированию индикаторов, или что-то в этом роде.
Спасибо,
Дэн.
Как запустить скрипт внутри советника?
Здравствуйте,
Я хотел бы узнать, как запустить скрипт в директории скриптов внутри советника.
If (condition true)
{
Запустить скрипт;
}
Заранее спасибо
С уважением,
Джимми