Прошу помощи

 

ПОЖАЛУЙСТА ПОМОГИТЕ КТО ЧЕМ МОЖЕТ!!!

В программировании я новичёк и занимаюсь от необходимости.

Появилась идея по трейдингу,решил попробовать отработать её в тестере. Взял за основу советника из учебника, изменил торговые условия и добавил плавающую точку.Проблема оказалась в том, что советник открывает и закрывает позиции на каждом тике. Где "собака зарыта" никак не пойму.

Файлы:
reverse.mq4  13 kb
 

Это чё у вас за непонятная конструкция:

//Торговые условия
  {
   if(Bid>PointUpDown)
    Opn_B=true;                               // Критерий откр. Buy      
    Cls_S=true;                               // Критерий закр. Sell
  }
  {
   if(Ask<PointUpDown)
    Opn_S=true;                               // Критерий откр. Sell      
    Cls_B=true;                               // Критерий закр. Buy 
  }
//Торговые условия


if(условие){оператор по условию;}else{оператор по иначе;}


 
Urain писал(а) >>

Это чё у вас за непонятная конструкция:

Urain
писал(а)
>>

Это чё у вас за непонятная конструкция:

Bid и Ask менял на Open[0]; Т.е в данном случае определяется точка плавающей координаты. Смысл заключается в том, что советник совершает открытие и закрытие на каждом тике!!!

 
Urain писал(а) >>

Это чё у вас за непонятная конструкция:


//-------------------------------------------------------------------+
//Находим точку разворота
{
if(Bid-Pips*Point>PointUpDown) //Если цена выше точки разворота на величину Pips
PointUpDown=Bid-Pips*Point; //Точку разворота подтягиваем вверх
}
{
if(Ask+Pips*Point<PointUpDown) //Если цена ниже точки разворота на величину Pips
PointUpDown=Ask+Pips*Point; //Точку разворота подтягиваем вниз
}


// Находим точку разворота
//-------------------------------------------------------------------+

На мой взгляд ЭТО аналогично else/

По крайней мере встречал в других советниках.

 
Aqwarius писал(а) >>


//-------------------------------------------------------------------+
//Находим точку разворота
{
if(Bid-Pips*Point>PointUpDown) //Если цена выше точки разворота на величину Pips
PointUpDown=Bid-Pips*Point; //Точку разворота подтягиваем вверх
}
{
if(Ask+Pips*Point<PointUpDown) //Если цена ниже точки разворота на величину Pips
PointUpDown=Ask+Pips*Point; //Точку разворота подтягиваем вниз
}


// Находим точку разворота
//-------------------------------------------------------------------+

На мой взгляд ЭТО аналогично else/

По крайней мере встречал в других советниках.

До этого цикла всё шло нормально

 
Aqwarius >>:

До этого цикла всё шло нормально

Можно вот так if(условие)  оператор;

Можно вот так if(условие)  оператор;else  оператор;

Можно вот так if(условие) { оператор1; оператор2;} else  оператор;

Можно вот так if(условие)  оператор; else { оператор1; оператор2;}

Можно вот так if(условие)  { оператор1; оператор2;} else { оператор3; оператор4;}

но только не так как у вас.

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

А то что вы видели скорее всего обрывки кода, или декомпил или намеренное запудриваение мозгов

 
Aqwarius >>:


//-------------------------------------------------------------------+
//Находим точку разворота
{
if(Bid-Pips*Point>PointUpDown) //Если цена выше точки разворота на величину Pips
PointUpDown=Bid-Pips*Point; //Точку разворота подтягиваем вверх
}
{
if(Ask+Pips*Point<PointUpDown) //Если цена ниже точки разворота на величину Pips
PointUpDown=Ask+Pips*Point; //Точку разворота подтягиваем вниз
}


// Находим точку разворота
//-------------------------------------------------------------------+

На мой взгляд ЭТО аналогично else/

По крайней мере встречал в других советниках.

(else можно перевести как иначе, те должна быть проверка условия и если оно не выполняется срабатывает конструкция иначе)

Позвольте у вас спросить else к чему ? иначе к какому условию?

 

Т.е.Должно быть так:

//-------------------------------------------------------------------+
//Находим точку разворота
{
if(Bid-Pips*Point>PointUpDown) //Если цена выше точки разворота на величину Pips
PointUpDown=Bid-Pips*Point; //Точку разворота подтягиваем вверх

else(Ask+Pips*Point<PointUpDown) //Если цена ниже точки разворота на величину Pips
PointUpDown=Ask+Pips*Point; //Точку разворота подтягиваем вниз
}

Кстати, вот кусок кода в оригинале:

//--------------------------------------------------------------- 5 --
// Торговые критерии
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_2
if (MA_1_t > MA_2_t + Rastvor*Point) // Если разница между
{ // ..МА 1 и 2 большая
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (MA_1_t < MA_2_t - Rastvor*Point) // Если разница между
{ // ..МА 1 и 2 большая
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}

иэто из учебника

Причина обращения: