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

 

Нужна помощь в кодировании советника - >10% прибыли/месяц

Привет всем, у меня есть очень простая стратегия, которая кажется довольно безопасной и дает хорошую доходность, но ужасно утомительна в ручную. Поэтому я хотел бы, чтобы кто-нибудь помог мне ее закодировать, чтобы и сэкономить усилия, и иметь возможность торговать 24 часа. Стратегия очень проста: размещайте BUY STOPS и SELL STOPS на 400 пунктов выше и ниже текущей цены. Расстояние между линиями должно быть внешним, также как и TP в пунктах и лоты (от 0.01). SL является опциональным и также внешним. Система работает до тех пор, пока не будет достигнута общая целевая прибыль (также внешняя). В этот момент программа все продает, отменяет все отложенные ордера и начинает работать заново. Как я уже сказал, все очень просто. Чистая математика, никаких отстающих (индикаторов). С помощью этой стратегии я получал около 10% прибыли в месяц, в зависимости от рыночных условий и управления капиталом. В долгосрочной перспективе это очень безопасная ставка, но очень утомительная в ручном исполнении. Я использую EURUSD, но если возможно, было бы плюсом иметь возможность торговать несколькими парами одновременно, просто для диверсификации (хотя реальной необходимости в этом нет, учитывая результаты, которые я имел до сих пор).

 

есть ли кто-нибудь, кто может мне помочь, я создал такой код:

double ccia = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,0);

double ccib = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,1);

int Trend;

if (ccia>ccib&&ccia<=-150) Trend=0;

if (ccia=150) Trend=1;

в коде я хотел, чтобы значение Trend изменялось только при выполнении условия. поэтому при выполнении условия значение Trend = 0 будет изменено только вторым IF. хотя значение cci находится между -150 и 150.

но почему я всегда получаю значение 0 (ноль) для значения Trend.

 
Q_Mouze:
есть ли кто-нибудь, кто может мне помочь, я сделал такой код:

double ccia = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,0);

double ccib = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,1);

int Trend;

if (ccia>ccib&&ccia<=-150) Trend=0;

if (ccia=150) Trend=1;

почему я всегда получаю значение 0 (ноль) для значения Trend.

Измените его на это (чтобы избежать одинакового значения при отсутствии условий) :

double ccia = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,0);

double ccib = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,1);

int Trend=-1;

if (ccia>ccib&&ccia<=-150) Trend=0;

if (ccia=150) Trend=1;

В данный момент CADCHF показывает значение, отличное от значения по умолчанию -1

 
mladen:
Измените его на это (чтобы избежать одинакового значения при отсутствии условий):
double ccia = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,0);

double ccib = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,1);

int Trend=-1;

if (ccia>ccib&&ccia<=-150) Trend=0;

if (ccia=150) Trend=1;
В данный момент CADCHF показывает значение, отличное от значения по умолчанию -1

Спасибо, Младен, но

double CCIA = ICCI (Symbol (), PERIOD_H1, 14, PRICE_CLOSE, 0);

double CCIB = ICCI (Symbol (), PERIOD_H1, 14, PRICE_CLOSE, 1);

Тренд инт;

если (CCIA> CCIB CCIA && условие 1

если (CCIA = 150) Trend = 1; =====> условие 2

в коде я хочу, чтобы при выполнении условия 1 значение тренда изменилось на 0, это состояние будет сохраняться до тех пор, пока не произойдет 2 условия, которые изменят значение тренда на 1.

но это происходит Тренд значение всегда 0 только изменилось, когда в условии 2, когда значение cci прошли или находятся под 100 значение тренда изменилось снова на 0.

 
Q_Mouze:
Спасибо, Младен, но

double CCIA = ICCI (Symbol (), PERIOD_H1, 14, PRICE_CLOSE, 0);

double CCIB = ICCI (Symbol (), PERIOD_H1, 14, PRICE_CLOSE, 1);

Тренд инт;

если (CCIA> CCIB CCIA && условие 1

если (CCIA = 150) Trend = 1; =====> условие 2

в коде я хочу, чтобы при выполнении условия 1 значение тренда изменилось на 0, это состояние будет сохраняться до тех пор, пока не произойдет 2 условия, которые изменят значение тренда на 1.

но это происходит Значение тренда всегда равно 0, только меняется, когда в условии 2, когда значение cci прошло или находится ниже 100 значение тренда снова меняется на 0.

Q_Mouze

Чтобы сделать это, одним из решений было бы использование статической переменной для тренда.

Тогда код будет выглядеть следующим образом:

double ccia = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,0);

double ccib = iCCI(Symbol(),PERIOD_H1,14,PRICE_CLOSE,1);

static int Trend=-1;

if (ccia>ccib&&ccia<=-150) Trend=0;

if (ccia=150) Trend=1;

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

_____________________

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

 

Все хорошие дни.

Помогите пожалуйста.

Так же буду смотреть сигналы от индикатора DSS Bressert + ahtf_(FILTER)(?).

делаю так:

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

double aTrend[2];

aTrend[0] =iCustom(NULL, 0, "DSS Bressert + ahtf_(FILTER)", 6, 0);

aTrend[1] =iCustom(NULL, 0, "DSS Bressert + ahtf_(FILTER)", 6, 1);

if (aTrend[1] < aTrend[0]) // buy

{

Теперь синяя вертикальная линия

}

if (aTrend[1] > aTrend[0]) // sell (продажа)

{

Теперь красная вертикальная линия

}

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

большие трудности в принятии сигнала. Пожалуйста, помогите.

Извините за мой английский.

Спасибо.

Изображение и индикатор прилагаю.

Файлы:
 
shtopr:
Всем хороших дней.

Помогите пожалуйста.

Так же будут смотреться сигналы от индикатора DSS Bressert + ahtf_ (FILTER)(?).

делаю так:

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

double aTrend[2];

aTrend[0] =iCustom(NULL, 0, "DSS Bressert + ahtf_(FILTER)", 6, 0);

aTrend[1] =iCustom(NULL, 0, "DSS Bressert + ahtf_(FILTER)", 6, 1);

if (aTrend[1] < aTrend[0]) // buy

{

Теперь синяя вертикальная линия

}

if (aTrend[1] > aTrend[0]) // sell (продажа)

{

Теперь красная вертикальная линия

}

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

большие трудности в принятии сигнала. Пожалуйста, помогите.

Извините за мой английский.

Спасибо.

Изобразите и прикрепите индикатор.

Чтобы увидеть, когда сигналы включены, отключите интерполяцию.

Также используйте для этого буфер 6. Когда он равен 1, это тренд вверх, когда он равен -1, это тренд вниз, и когда текущий тренд != предыдущему тренду, это изменение тренда и есть сигнал.

 
mladen:
Чтобы увидеть, когда сигналы включены, выключите интерполяцию. Также используйте для этого буфер 6. Когда он равен 1, это тренд вверх, когда он равен -1, это тренд вниз, и когда текущий тренд != предыдущему тренду, происходит изменение тренда и появляется сигнал.

Я не получил ((.

Пожалуйста.

Если это возможно ...

Показать код.

Спасибо.

P.S.

извините за перевод

 
shtopr:
Я не получил ((.

Пожалуйста.

Если это возможно...

Показать код.

Спасибо.

P.S.

извините за перевод

На вашей картинке вы показываете часовой график и дневное значение индикатора.

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

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

 

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

не могли бы вы помочь конвертировать эти две версии в rsi отдельно? Я пытаюсь, но не знаю как это сделать, т.е. rsi от kairi, rsi от cci? Большое спасибо за помощь.

Файлы:
cci.mq4  4 kb
kairi.mq4  8 kb