Помощь в кодировании - страница 423

 

mladen,

Я сделал изменение в номере 144 и унифицировал магическое число, "MagicNumber" для всех инструментов....It теперь принимает максимум 5 сделок за раз, но теперь он повторяет сделки на том же символе в то же время, например, если получить торговый сигнал SELL на EURUSD, он будет размещать этот EURUSD ордер на продажу 5 раз. Смотрите изображение живого ордера, который он выставил таким образом:

mladen:
Если вы хотите, чтобы у него было максимум 5 ордеров по всем символам, перейдите к строке 144(if( OrderSymbol() != Symbol() ) continue;) и удалите ее. И сохраните магическое число для всех экземпляров на всех символах одинаковым (чтобы он мог считать ордера, открытые только этим советником на всех символах).
Файлы:
 
Mastercash:
mladen, я сделал изменение в номере 144 и унифицировал магическое число, "MagicNumber" по всем инструментам....И теперь советник принимает максимум 5 сделок за раз, но теперь он повторяет сделки на одном и том же инструменте одновременно, например, если получить торговый сигнал SELL на EURUSD, он будет размещать ордер на продажу EURUSD 5 раз. Смотрите изображение живого ордера, который он выставил таким образом:

Пожалуйста, прочитайте мое предыдущее сообщение

Это открытие не имеет ничего общего с отсутствием проверки символа - у вас должна быть дополнительная проверка, чтобы запретить открытие ордеров на том же символе и на том же баре. Если у вас один и тот же советник на одних и тех же символах и разных таймфреймах, то вам не поможет даже эта проверка (так как бары будут разными в некоторых случаях для разных таймфреймов одного и того же символа).

 

Большое спасибо mladen,

Я попытался добавить код, который вы мне подсказали несколько лет назад.... но, кажется, он не работает..... код, если вы помните, выглядит так...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

open().......

пожалуйста, помогите мне добавить правильный код в нужном месте!

mladen:
Это не зависит от этой части кода Вы должны добавить проверку в остальной части кода не открывать ордер на том же баре и том же символе
 
Mastercash:
Большое спасибо mladen,

Я пытался добавить код, который вы думали меня несколько лет назад.... но это, кажется, не работает..... код, если вы помните, идти таким образом...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

open().......

пожалуйста, помогите мне добавить правильный код в нужном месте!

Mastercash

Как я уже говорил в предыдущем сообщении: если вы прикрепите советника к одному и тому же символу и разным таймфреймам, то вы никак не сможете помешать советнику с более низким таймфреймом открыть ордер на текущем баре с более высоким таймфреймом (на котором уже есть открытый ордер).

Вам придется просканировать все текущие бары таймфреймов, что в итоге приведет к текущему бару самого высокого таймфрейма - но даже тогда вы не будете знать, какой таймфрейм открыл этот бар.

Вы могли бы использовать поле комментария в ордере, чтобы отметить это, но поле комментария может быть изменено брокером, поэтому нет надежного способа сделать это.

 

Хорошо, сэр...

но я никогда не делал свой советник с несколькими таймфреймами. В любом случае я прикрепил код ниже... пожалуйста, помогите мне с корректировкой для этой повторяющейся торговли на одной и той же валюте, чтобы остановить: и если мне нужно взять на себя дополнительные обязательства, чтобы сделать это, вы можете сообщить мне об этом по электронной почте.tnks

mladen:
Mastercash

Как я уже говорил в предыдущем сообщении: если вы прикрепите советника к одному и тому же символу и разным таймфреймам, вы никак не сможете помешать советнику с более низким таймфреймом открыть ордер на текущем баре с более высоким таймфреймом (на котором уже есть открытый ордер).

Вам придется просканировать все текущие бары таймфреймов, что в итоге приведет к самому высокому текущему бару таймфрейма - но даже тогда вы не будете знать, какой таймфрейм открыл этот бар.

Вы могли бы использовать поле комментария ордера, чтобы отметить это, но поле комментария может быть изменено брокером, поэтому надежного способа сделать это нет.
Файлы:
 
Mastercash:
Хорошо, сэр... но я никогда не делаю свой советник с несколькими таймфреймами. В любом случае, я прикрепил код ниже... пожалуйста, помогите мне с настройкой для этой повторяющейся торговли на той же валюте, чтобы остановить: и если мне нужно взять на себя дополнительные обязательства, чтобы сделать это, вы можете сообщить мне об этом по электронной почте. tnks

На самом деле этот советник является мультитаймфреймовым (он использует индикаторы на 5-минутных данных), но не важно: здесь есть версия, которая не позволяет открывать более одного ордера на бар nicetrader_1.021.mq4

Файлы:
 

Привет всем,

может ли кто-нибудь помочь мне в кодировании простой ea на основе индикатора xcode, так как я новичок в кодировании.

Мне нужны ордера на покупку и продажу после закрытия сигнального бара, опция изменения периода сигнала индикатора, опция изменения торговых часов и торговых дней.

Входы на покупку и продажу просты, как описано на скриншоте. любой таймфрейм, любая пара, опция тейк-профита, опция трейлинг-стопа.

Я знаю, что это не святой грааль и далеко от него (как святой грааль не существует ), но мы можем попытаться получить что-то из этого.

Также если возможно добавить опцию увеличения размера лота (чтобы менять вручную). например: 0.01,0.01,0.02,0.02,0.04,0.04,0.08,0.08 и так далее....

Файлы:
xcode.jpg  346 kb
xcode.mq4  11 kb
 
mladen:
TFI

Попробуйте сделать что-то вроде этого:

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//-----------------------------------------------------

//

//-----------------------------------------------------

int clongs = 0;

int cshorts = 0;

for (i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

Привет, Младен,

большое спасибо за помощь! Я реализовал ваш код, как было предложено.

Теперь все работает

Могу ли я задать вам еще один короткий вопрос?

Что вы думаете о CCI Filter, правильный ли это подход для фильтрации боковых рынков в данном случае?

Должен ли я задать ему диапазон, например (CCIFilter>80 && CCIFilter<100).

Может быть, вы можете дать совет?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

for(i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S. Надеюсь, вас не затронуло банкротство Альпари, там довольно неспокойно.

Заранее спасибо и хороших выходных!

С наилучшими пожеланиями,

TFI

Файлы:
backtest2.jpg  160 kb
 
tfi_markets:
Привет, Младен,

Большое спасибо за помощь! Я реализовал ваш код, как было предложено.

Теперь все работает

Можно, наверное, задать вам еще один короткий вопрос?

Что вы думаете о CCI Filter, правильный ли это подход для фильтрации боковых рынков в данном случае?

Должен ли я задать ему диапазон, например (CCIFilter>80 && CCIFilter<100).

Может быть, вы можете дать совет?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

for(i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S. Надеюсь, вас не затронуло банкротство Альпари, там довольно неспокойно.

Заранее спасибо и хороших выходных!

С наилучшими пожеланиями,

TFI

TFI

Об Alpari: Я являюсь их клиентом уже долгое время. Но время от времени я закрываю свои счета (когда достигается то, что я считаю критической массой), и в этот раз я закрыл свой счет у них около месяца назад, и не стал открывать новый (имея еще открытый счет у другого брокера). Честно говоря, несмотря на то, что мне повезло и я не пострадал от случившегося, я должен сказать, что мне грустно от того, что случилось с ними: у меня никогда не было никаких проблем (даже самых незначительных) с ними, и в случаях, когда некоторые вещи требовали уточнения или исправления, они всегда делали это своевременно.

_______________________

О фильтре CCI: обычно значения между -100 и +100 считаются "нормальной зоной" для CCI (что означает диапазон), но многие трейдеры торгуют CCI исключительно на нулевом кресте с параметром длины по умолчанию (14). Это увеличивает вероятность попадания в вихревую волну, но те, кто использует нулевые кресты, обычно используют их на коротких таймфреймах. Чтобы избежать такого использования, установите более длительный период (например, 50), который является довольно хорошей настройкой для сигналов нулевого креста на многих инструментах и таймфреймах.

 
mladen:
TFI

Об Альпари: Я являюсь их клиентом уже долгое время. Но время от времени я закрываю свои счета (когда, по моему мнению, достигается критическая масса), и в этот раз я закрыл свой счет у них около месяца назад и не стал открывать новый (имея еще открытый счет у другого брокера). Честно говоря, несмотря на то, что мне повезло и я не пострадал от случившегося, я должен сказать, что мне грустно от того, что случилось с ними: у меня никогда не было никаких проблем (даже самых незначительных) с ними, и в случаях, когда некоторые вещи требовали уточнения или исправления, они всегда делали это своевременно.

_______________________

О фильтре CCI: обычно значения от -100 до +100 считаются "нормальной зоной" для CCI (что означает диапазон), но многие трейдеры торгуют CCI исключительно на нулевом кресте с параметром длины по умолчанию (14). Это увеличивает вероятность попадания в вихревую волну, но те, кто использует нулевые кресты, обычно используют их на коротких таймфреймах. Чтобы избежать такого использования, установите более длительный период (например, 50), который является довольно хорошей настройкой для сигналов нулевого кросса на многих инструментах и таймфреймах.

Здравствуйте, Младен,

Я хотел бы еще раз поблагодарить Вас за помощь. Вы очень компетентны. Я действительно ценю это, в наше время люди, которые помогают и делятся знаниями, довольно редки. Я также буду реализовывать и проверять ваши предложения по поводу CCI.

Меня, к счастью, не затронул случай с Alpari, потому что я все еще разрабатываю свой советник (он должен торговать, пока я в офисе, и приносить дополнительный доход мне и моей семье). Я использовал Alpari в качестве тестовой платформы, потому что они оставили демо-счет открытым на неограниченное время. Несколько дней назад я открыл счет в IG markets, но деньги еще не переведены. Сначала мне нужно, чтобы советник работал надежно и без ошибок.

Всего вам наилучшего и продолжайте свою отличную работу!

С наилучшими пожеланиями,

TFI