[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 219

 
DanLett:

Подскажите плз что сделать если:

Советник в тестере работает норм,все по плану, а на реалке не открывает сделки

P.S. Очн нужна помощь, вопрос жизни-смерти

А торговля советникам разрешена?
 
DanLett:

Подскажите плз что сделать если:

Советник в тестере работает норм,все по плану, а на реалке не открывает сделки

P.S. Очн нужна помощь, вопрос жизни-смерти


я не специалист, мож здесь проблема?

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
на MODE_TRADES заменили?
 

Что у меня с математикой?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

по моему currentPrice >= profitLine значит что если profitLine == или >, так?

Но мне срабатвает тока если > хотя б на один пункт.

 
Сравнивать действительные числа (double) на строгое равенство - не лучшее, что можно с ними сделать. Корректнее будет сравнивать их разность с максимально допустимой величиной.
 
olis: Что у меня с математикой?
FAQ смотрели?
 

Ну да... не подумал. Спасибо.
 
Gek34:

Уважаемые знатоки вопрос про индикатор снимаю, решение пришло совершенно неожиданно, продублировал вычисления, и опа.... все заработало.

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;

double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);

SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;

//----
i=Bars-counted_bars-1;

while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);

//----
i--;
}
return(0);
}


Вопрос снимаю. Понавыдумывал всякой ерунды. Оказалось все намного проще. Вынес переменную Stark из функции start, чтоб не обнулялась на каждом тике.
 

подается сигнал "sig1" срабатывает команда BUY и устанавливается отложенный ордер SELLSTOP ниже ордера BUY.

при закрытие позиции BUY, SELLSTOP тоже удаляется.

Но как быть когда этот BAY не закрылся, и открылся следующий BUY и следующий и т.д.

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

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

-----------------------------------

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

после закрытия бай не представляю как.

 int i, k=OrdersTotal(),ti;
    for (i=0; i<k; i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType()== OP_SELLSTOP){
    ti = OrderMagicNumber();  }
    if(OrderType()== OP_BUY)
    if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

подается сигнал "sig1" срабатывает команда BUY и устанавливается отложенный ордер SELLSTOP ниже ордера BUY.

при закрытие позиции BUY, SELLSTOP тоже удаляется.

Но как быть когда этот BAY не закрылся, и открылся следующий BUY и следующий и т.д.

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

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

-----------------------------------

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

после закрытия бай не представляю как.


ну дак.. тем же Селектом и проверяешь...

int i, k=OrdersTotal(), ti, tid;

for (i=0; i<k; i++){
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderType()== OP_SELLSTOP) {
          tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
          ti = OrderMagicNumber();  
          //  ищем ордер по тикету
          if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
             // проверяем Закрылся ли этот ордер - это твоя Байка
             if (OrderCloseTime() > 0) {
                //  удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
                OrderDelete(tid);
             }
          } 
       }
    }
}
 
чтойто ты мудришь с открытиями... поверь Фигню ты делаешь... можешь не тратить время... твой мартингейл так просто не прокатит...