Требуется помощь специалистов

 

Здравствуйте.
Ситуация такая: есть три данных стохастика, которые могут быть в диапазоне ниже уровня 20 и между 20 и 80; у этих трех даных стахастика есть три ценовых показателя (цены закрытия). Два из них это черные свечи (Close<Open), третья белая свеча. Вторая черная свеча ниже первой, при этом все значения стохастика растущие по сравнению с предыдущими. Бары могут идти не друг за другом, а через какое-то колличество баров (которое нас не интересует).
Система сводится к следующему - ослабление движения вниз с целью покупки.
схема такая:
1. находим бар, где стохастик ниже 20, бар черный. Записываем его местонахождение (сдвиг, shift)
2. находим бар стахастика ниже 80, черный. Записываем местонахождение.
3. берем последний бар и проверяем на условие - стохастик ниже 80, белый, последние 2 значения находятся в определенных пределах от текущего.

Что я сделал не так??? Если можно приведите свои варианты (я только начинаю програмировать мне гораздо понятнее на конкретных примерах)!!!


extern double Lots = 0.1;


int start()
{
double S1, S2, S3, bbm;
int i, Shift, n, ticket, b, divup;
i=0;
Bars=100;
Shift=i+1;
S1 = iStochastic(0,0,5,3,3,MODE_SMA,MODE_MAIN,i);
if (S1<=20)
{
true;
}
if (Close[i]<Open[i])//Черная свеча
{
true;
}
for (n=1;n<=Bars;n++)//находим второй бар
{if (Close[i+1+n]<Close[i+1])
true;
}
if (Close[i+1+n]<Open[i+1+n])//вторая черная свеча
{
true;
}
S2 = iStochastic(0,0,5,3,3,MODE_SMA,MODE_MAIN,i+1+n);
if (S2<80)
{
true;
}
if (S1<S2&&Close[i+1+n]<Close[i])
{
true;
}
for (b=1;b<=Bars;b++)// находим третий бар
{if (Close[i+1+n+b]>Close[i+1+n])
true;
}
if (Close[i+1+n+b]>Open[i+1+n+b])//третья белая свеча
{
true;
}
S3 = iStochastic(0,0,5,3,3,MODE_SMA,MODE_MAIN,i+1+n+b);
if (S3<80)
{
true;
}
if (S2<S3&&Close[i+1+n+b]>Close[i+1+n])
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green);// покупка
return(0);
}




 
Kostay:
Здравствуйте.
Ситуация такая: есть три данных стохастика, которые могут быть в диапазоне ниже уровня 20 и между 20 и 80; у этих трех даных стахастика есть три ценовых показателя (цены закрытия). Два из них это черные свечи (Close<Open), третья белая свеча. Вторая черная свеча ниже первой, при этом все значения стохастика растущие по сравнению с предыдущими. Бары могут идти не друг за другом, а через какое-то колличество баров (которое нас не интересует).
Система сводится к следующему - ослабление движения вниз с целью покупки.
схема такая:
1. находим бар, где стохастик ниже 20, бар черный. Записываем его местонахождение (сдвиг, shift)
2. находим бар стахастика ниже 80, черный. Записываем местонахождение.
3. берем последний бар и проверяем на условие - стохастик ниже 80, белый, последние 2 значения находятся в определенных пределах от текущего.

Что я сделал не так??? Если можно приведите свои варианты (я только начинаю програмировать мне гораздо понятнее на конкретных примерах)!!!




Расшифруй пожалуйста вот этот кусок кода

if (Close[i+1+n+b]>Open[i+1+n+b])//третья белая свеча
{
true;
}

Что значит в данном случае true? Я понимаю, если бы ты это значение чему-то присваивал, а потом проверял. Кусок кода, который приведен ниже ничего не делает.

if (S1<=20)
{
true;
}
if (Close[i]<Open[i])//Черная свеча
{
true;
}
for (n=1;n<=Bars;n++)//находим второй бар
{if (Close[i+1+n]<Close[i+1])
true;
}
if (Close[i+1+n]<Open[i+1+n])//вторая черная свеча
{
true;
}
if (S2<80)
{
true;
}
if (S1<S2&&Close[i+1+n]<Close[i])
{
true;
}
for (b=1;b<=Bars;b++)// находим третий бар
{if (Close[i+1+n+b]>Close[i+1+n])
true;
}
if (Close[i+1+n+b]>Open[i+1+n+b])//третья белая свеча
{
true;
}
if (S3<80)
{
true;
}
Да, еще. Проверь значения i, n,b в последнем условии
f (S2<S3&&Close[i+1+n+b]>Close[i+1+n])
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green);// покупка 
return(0);
}
 
if (Close[i+1+n+b]>Open[i+1+n+b])//третья белая свеча
{
true;
}

Этот код (по моей задумке) показывает что если третий бар белая свеча (т. е. цены закрытия выше цены открытия) то это истина. в дальнейшем исходим из этого условия.
Вообще частое true обозначает верный вариант (но это неправильно, а подругому незнаю как).
Как избавиться от true при этом обозначить все необходимые условия???
Значения i, n и b я использовал для поиска следующих баров через цикл (насколько это корректно?)

for (n=1;n<=Bars;n++)//находим второй бар
{if (Close[i+1+n]<Close[i+1])
true;
}
 
Kostay:
if (Close[i+1+n+b]>Open[i+1+n+b])//третья белая свеча
{
true;
}

Этот код (по моей задумке) показывает что если третий бар белая свеча (т. е. цены закрытия выше цены открытия) то это истина. в дальнейшем исходим из этого условия.
Вообще частое true обозначает верный вариант (но это неправильно, а подругому незнаю как).
Как избавиться от true при этом обозначить все необходимые условия???
Значения i, n и b я использовал для поиска следующих баров через цикл (насколько это корректно?)

for (n=1;n<=Bars;n++)//находим второй бар
{if (Close[i+1+n]<Close[i+1])
true;
}


Абсолютно не хочется самому все писать. Заместо true сделай какую-нибудь логическую переменную и присваивай нужное тебе значение.

Перед принятием решения проверь все свои логические переменные.

 
Vinin:
Абсолютно не хочется самому все писать...
А куда Вам деваться, Vinin?
Где-то промелькнуло, что Вас назначили главным, а авансы надо отрабатывать!
 
granit77:
Vinin:
Абсолютно не хочется самому все писать...
А куда Вам деваться, Vinin?
Где-то промелькнуло, что Вас назначили главным, а авансы надо отрабатывать!

А аванс я еще не получал. Так что все вопросы к распорядителю (к Игорю Ким).