Начинаю кодить?

 
В програмировании несоображаю вообще,но есть огромное желание.Так вот в чем вопроос,начал потихоньку позновать азы,пытаюсь стелепать простенького эксперта на основе простенького пользовательского индикатора.КАКУЮ ФУНКЦИЮ НУЖНО ПРОПИСАТЬ ЧТО Б ОТКРЫВАЛ ОРДЕР КОГДА ЦЕНА НАХОДИТЬСЯ ОТНОСИТЕЛЬНО ИНДИКАТОРА(выше или ниже доупустим точки какую рисует индюк) ?Зарание благодарен
 
Ну что мне никто не скажет каким образом это написать в if
 
double ma_a_1=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,1);
double ma_b_1=iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,1);
double ma_a_2=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,2);
double ma_b_2=iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,2);
  
        if(ma_a_1<ma_b_1&&ma_a_2>ma_b_2)//тут условие пересечения ma_a ma_b cнизу вверх
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError());

Вот например кусок кода из MA Sample (ты его найдешь в папке experts, там ещё есть MACD Sample вот их и изучай), по пересечению двух мувингов.

Если ma_a пересекает ma_b снизу вверх, то открывается позиция на покупку.

 
Мне нужно не пересичение,а есть индюк простенький пользовательский,который рисует точки(PLdot,он кстати гдето есть в базе),так вот мне надо задать что б когда цена открытия бара выше этой точки,открывал ордер на покупку,а когда цена ниже открывал ордер на продажу.Я все понимаю что с стандартными индюками все просто,а вот как пользоваться пользовательскими вот в ечм вопроос.
 
poiskspider писал (а) >>
Мне нужно не пересичение,а есть индюк простенький пользовательский,который рисует точки(PLdot,он кстати гдето есть в базе),так вот мне надо задать что б когда цена открытия бара выше этой точки,открывал ордер на покупку,а когда цена ниже открывал ордер на продажу.Я все понимаю что с стандартными индюками все просто,а вот как пользоваться пользовательскими вот в ечм вопроос.

Надо было сразу указывать какой индикатор хочешь использовать

Используй функцию iCustom().

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

double pldot_0=iCustom(NULL,0,"PLdot",0,0);//берем значение с 0го бара
 
if(Close[0]>p_dot_0)
{
   .............//открываем ордер на покупку
}
else if(Close[0]<p_dot_0)
{
   .......//открываем ордер на продажу
}
 
Ух ты как благодарен,сейчас буду пробывать
 
Пишет что переменная

'p_dot_0' - variable not defined

Если можно поподробней разживать

 

Ах да, я ошибку допустил в имени переменной. Вот исправленный.

double pldot_0=iCustom(NULL,0,"PLdot",0,0);//берем значение с 0го бара
 
if(Close[0]>pldot_0)
{
   .............//открываем ордер на покупку
}
else if(Close[0]<pldot_0)
{
   .......//открываем ордер на продажу
}
 
У меня появился еще один вопрос--компилирую значит эксперта,а он пишет что или лишняя или надо еще скобку -},возможно ли както проверить где и как их ставитьб эти- }
 

ВОТ ДЛЯ НАГЛЯДНОСТИ КУСОК КОДА В ЕЧМ ОШИБСЯ ПОДСКАЖИТЕ ПОЖАЛУЙСТА

int start()

{
double pldot_0=iCustom(NULL,0,"PLdot",0,0);//берем значение с 0го бара

if(Close[0]>pldot_0)
{
//открываем ордер на покупку
return(0);
}
else if(Close[0]<pldot_0)---------------------'\end_of_program' - ending bracket '}' expected

{
//открываем ордер на продажу
return(0);
}
return(0);
}
{----------------------------------В ЭТОМ МЕСТЕ ВЫДАЕТ ПРЕДУПРЕЖДЕНИЕ '{' - expression on global scope not allowed

if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if(Close[0]<pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
{

if(Close[0]>pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
 

посчитайте количество левых и правых скобок

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