Помогите с первым експертом(не могу понять где ошибка)

 

Просто в голову пришла одна идея, хочется ее воплотить ...

Использую индикатор ССI. При достижении уровня открывается сделка... потом так же закрываеться.

Вот код...


//+------------------------------------------------------------------+
//|                                 Проба01.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      ""

//---- input parameters
extern int       TP=150;
extern int       SL=70;
extern int       LEVEL_1=100;
extern int       LEVEL_2=-100;
extern int       lots=1;  
//+------------------------------------------------------------------+

                                         
//+------------------------------------------------------------------+
int start()
{double val = iCCI(NULL ,PERIOD_M1,14,PRICE_TYPICAL,0);

  
 if(OrderType())
      {
         if(val>LEVEL_1)
            {
              OrderSend(Symbol(),OP_BUY,lots,SL,TP,magic(),0,Green);
               
            }
         else if(val<LEVEL_2)
            {
               OrderSend(Symbol(),OP_SELL,lots,SL,TP,magic(),0,Red);
               
                     return();
                  
            }
      }

for()
  {
      OrderSelect(SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() )
        {
         if(OrderType()==OP_BUY)
           {
            if(val<-100)
                {
                 OrderClose(OrderTicket(),OrderLots(),Violet);
                 return();
                }
           }
         else
           {
            if(val>100)
              {
               OrderClose(OrderTicket(),OrderLots(),Violet);
               return();
              }
           }
        }
   }
    return();
    }
    



Файлы:
dacql01.mq4  2 kb
 

Неправильные строчки:

if(OrderType()),

for()
и

OrderSelect(SELECT_BY_POS, MODE_TRADES);
Смотрите справочники

 

Стопы тоже неправильно  выполнены.

Лучше бы вот так :

extern int       StopLoss=100;
extern int       TakeProfit=70;
double SL,TP;
int ticket;
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

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

...... .......{
SL=0;TP=0;
if(StopLoss>0)   SL=Ask-Point*StopLoss;
if(TakeProfit>0) TP=Ask+Point*TakeProfit;
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"хи-хи",0,0,Blue);
if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0);}
              }

 
oyshen >>:

Просто в голову пришла одна идея, хочется ее воплотить ...

Использую индикатор ССI. При достижении уровня открывается сделка... потом так же закрываеться.

Вот код...

 

На вскидку... Посмотрите справку или учебник по функциям, которые выделены красным. И попробуйте сначала понять конструкцию, которую строите - для чего нужны те или иные операторы, прежде чем садиться программировать. А с наскока, подставить лишь бы было - из этого ничего не получится. Вы должны сами полностью понять конструкцию программы и "разжевать ее компьютеру" написав правильный код. Например, для чего у вас оператор for(), для чего он служит, что он делает? И т.п. Если вы сами конструкцию не понимаете, как ее сможет понять компьютер?

 

//+------------------------------------------------------------------+
//|                                 Проба01.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      ""

//---- input parameters
extern int       TP=150;
extern int       SL=70;
extern int       LEVEL_1=100;
extern int       LEVEL_2=-100;
extern int       lots=1;  
//+------------------------------------------------------------------+

                                         
//+------------------------------------------------------------------+
int start()
{double val = iCCI(NULL ,PERIOD_M1,14,PRICE_TYPICAL,0);

  
 if(OrderType())
      {
         if(val>LEVEL_1)
            {
              OrderSend(Symbol(),OP_BUY,lots,SL,TP,magic(),0,Green);
               
            }
         else if(val<LEVEL_2)
            {
               OrderSend(Symbol(),OP_SELL,lots,SL,TP,magic(),0,Red);
               
                     return();
                  
            }
      }

for()
  {
      OrderSelect(SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() )
        {
         if(OrderType()==OP_BUY)
           {
            if(val<-100)
                {
                 OrderClose(OrderTicket(),OrderLots(),Violet);
                 return();
                }
           }
         else
           {
            if(val>100)
              {
               OrderClose(OrderTicket(),OrderLots(),Violet);
               return();
              }
           }
        }
   }
    return();
    }
 
Да он прикалывается !!
 
Спасибо за помощь.
Причина обращения: