[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 750

 
ToLik_SRGV:

А вот это правильно, про это кажется, еще Рустам намекнул

Да, я уже после того как пост отправил, прочитал :)
 
Спасибо всем, пошел дальше разгребать :)
 

НАРОД ПОМОГИТЕ НЕ ЧЕ НЕ ПОЙМУ ЕСТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕНЫЕ

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool
b,s, 
bs,
ss,
bt,
st;
double 
bl,sl;  
//+------------------------------------------------------------------+

ПО ИХ ДАННЫМ ОТКРЫВАЕТСЯ ОРДЕР

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(bs==1&&bl==1)
{
    NewOrder1(OP_BUYLIMIT,Lot);

Today=TimeDay(TimeCurrent())
;}

return(0);}

//+------------------------------------------------------------------+
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;
        }
int tic=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
if(tic<0) {Print(GetLastError());
        }else
        {
b=0;s=0;  
bs=0;
ss=0;
bt=0;
st=0;    
bl=0;sl=0; }
return(tic);}

ПО СУТИ ЕСЛИ ОРДЕРУ НАЗНАЧЕН ТИКЕТ БОЛЬШЕ 0 ТО ДОЛЖНА СРАБОТАТЬ ВОТ ЭТА ФУНКЦИЯ

else
        {
b=0;s=0; 
bs=0;
ss=0;
bt=0;
st=0;   
bl=0;sl=0; }

КОТОРАЯ ДОЛЖНА ВСЕ ЗНАЧЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕНЫХ ИЗМЕНИТЬ НА 0, И ПО СУТИ НЕ ОТКРЫВАТЬ НОВЫЙ ОРДЕР СНОВА,

А ОНО ПОЧЕМУТО ВОЗРАЩЯЕТСЯ ОПЯТЬ К ОТКРЫТИЮ ОРДЕРА И ОТКРЫВАЕТ НА КАЖДОМ НОВОМ ТИЕ ВСЕ НОВЫЕ И НОВЫЕ ОРДЕРА.

ДЕ И СКАТЬ ПРИЧИНУ СТОЛЬ НЕ ПОНЯТНОГО МНЕ ЯВЕНИЯ?

ДА САМИ ГЛОБАЛЬНЫЕ ПЕРЕМЕНЫЕ НАЗНАЧАЮТСЯ ВОТ ОТСЮДА ПРИ ЗАКРЫТИИ РЫНОЧНОО ОРДЕРА

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
       
         }
      }

ТАКЖЕ ВОТ ПОЛНОСТЬ ЕКСПЕРТ

Файлы:
test8_2.mq4  7 kb
 
FoxUA:

НАРОД ПОМОГИТЕ НЕ ЧЕ НЕ ПОЙМУ...


Где блок заполняющий эти переменные значениями?
Хотелось бы посмотреть точный код вашего эксперта, одним куском, в том виде, в котором он у вас компилируется и тестируется.
Не кусками, потому как этот вопрос уже висит довольно долго, и отвечали на него не раз, а из за этих кусков, толком все картину проблемы никто до конца понять не может.

По этому пожалуйста покажите все картину целиком, что бы не было путаницы.

 
ToLik_SRGV:

Где блок заполняющий эти переменные значениями?
Хотелось бы посмотреть точный код вашего эксперта, одним куском, в том виде, в котором он у вас компилируется и тестируется.
Не кусками, потому как этот вопрос уже висит довольно долго, и отвечали на него не раз, а из за этих кусков, толком все картину проблемы никто до конца понять не может.

По этому пожалуйста покажите все картину целиком, что бы не было путаницы.

ВОТ СОВЕТНИК ЦЕЛЯКОМ

Файлы:
test8_1.mq4  7 kb
 

 на просьбы в теме "напишу советник бесплатно " не всегда откликаются?

 
diaspar:

 на просьбы в теме "напишу советник бесплатно " не всегда откликаются?

Позвольте встречный вопрос, а как часто вы ходите на работу бесплатно?
Вот примерно с такой частотой там и отвечают.
 
diaspar:

на просьбы в теме "напишу советник бесплатно " не всегда откликаются?

Тему замутил топикстартер. Однако пожеланий пришло гораздо больше того, что он способен переварить. По логике, именно он и должен отвечать - с него и спрос. А на что Вы рассчитывали?
 
FoxUA:

ТАК НЕ ЗНАЕШ В ЧЕМ ОШИБКА В МОЕМ СОВЕТНИКЕ Я УЖО ВСЕ ШО МОЖНО ПЕРЕПРОБЫВАЛ А РЕЗУЛЬТАТ 1 НА КАЖДОМ ТИЕ + 1 ОТЛОЖЕНЫЙ ОРДЕР ЕДИНСТВЕНОЕ ТО ПРИ ЗАКРЫТИИ ДРУГОГО РЫНОЧНОГО МЕНЯЕТСЯ ПЕРЕМЕНАЯ ОТКРЫВАЕТСЯ ДРУГОЙ ОЛОЖНИК И ПО НОВОЙ С КАЖДЫМ ТИКОМ ОТКРЫВАЕТ

В процессе…

Скорее всего баг в блоке заполнения этих переменных значениями (в цикле for), одну ошибку (в OrderSelect()) там я уже нашел, но результат пока не изменился, похоже косяк где то в логике этого блока.

P.S.
Пожалуйста, перейдите в нормальный регистр символов.

 
FoxUA:
 

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

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