Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 90

 
artmedia70:

Пока не смотрел на предмет ошибок - дел полно.

Для того, чтобы закрыть Sell там, где красный крестик, нужно проверять на текущем баре. Если Ask<=уровню закрытия && Open[0]>уровня закрытия


Что-то никак не получается Сделка на продажу с кодом if(Ask<=PriceLow && Open[0]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); вообще не закрывается.


Если интересна тема для ускоренной связи со мной скайп alexey1979621

 
alexey1979621:

Что-то никак не получается Сделка на продажу с кодом if(Ask<=PriceLow && Open[0]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); вообще не закрывается.


Если интересна тема для ускоренной связи со мной скайп alexey1979621


 if(Ask<=PriceLow && High[1]>PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
 
artmedia70:


Не получилось. Может влияет вот эта штука if(Volume[0]>1) return;
 
alexey1979621:

Тестируете по ценам открытия?

Тут нужно по тикам

 
тестирую по всем тикам
artmedia70:

Тестируете по ценам открытия?

Тут нужно по тикам


тестирую по всем тикам
 
alexey1979621:
тестирую по всем тикамтестирую по всем тикам

А где была линия индикатора на момент закрытия Sell ?

 
alexey1979621:

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

согласен, что ExtremeTMA перерисовывает, но полагаю что это не влияет на поиск точек входа, здесь главное фильтры. Я использовал индикатор TDI. Чего наколдовал прикладываю (сразу говорю, что руки у меня кривые, поэтому проект советник под стать рукам). Одна проблема с ним, в тестере 1 год тестирует часов 5 (где то закралась ошибка). Если не сложно посмотрите на предмет ошибок.

Перебор ордеров делайте примерно по следующему принципу:

int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
   //----
   if (OrdersTotal()>0)
   {  for (int i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  if (OrderSymbol()!=Symbol())   continue;
            if (OrderMagicNumber()!=Magic) continue;
            {  if(OrderType()==OP_BUY)  buys++;
               if(OrderType()==OP_SELL) sells++;
            }
   }  }  }
   //---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

Бросилось в глаза то, что задаёте Magic=124, но в коде сразу написано 124. То же самое со Slippage, в OrderSend и OrderClose стоит 3 (три).

 
alexey1979621:

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

согласен, что ExtremeTMA перерисовывает, но полагаю что это не влияет на поиск точек входа, здесь главное фильтры. Я использовал индикатор TDI. Чего наколдовал прикладываю (сразу говорю, что руки у меня кривые, поэтому проект советник под стать рукам). Одна проблема с ним, в тестере 1 год тестирует часов 5 (где то закралась ошибка). Если не сложно посмотрите на предмет ошибок.

Возможно, что скорострельность советника падает из-за тяжести расчётов кастомного индикатора. Киньте на график, на котором торгуете, следующий скрипт чтоб проверить тяжесть расчётов. Если долго не будет коммента, то уменьшите N до 100000 или ещё меньше. Посмотрите сколько милисекунд затрачивается на одну итерацию.

//---
int    N=1000000;
//---
double PriceHigh, PriceLow, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int    timestart, timestop;
//---
string TimeFrame         = "current time frame";
int    HalfLength        = 56;
int    Price             = PRICE_CLOSE;
double ATRMultiplier     = 2.0;
int    ATRPeriod         = 100;
bool   Interpolate       = true;
double TrendThreshold    = 0.5;
bool   Distances         = false;
//---
int RSI_Period           = 13;         //8-25
int RSI_Price            = MODE_CLOSE;           //0-6
int Volatility_Band      = 34;    //20-40
int RSI_Price_Line       = 2;      
int RSI_Price_Type       = MODE_SMA;      //0-3
int Trade_Signal_Line    = 7;   
int Trade_Signal_Type    = MODE_SMA;   //0-3
bool UseAlerts           = false;
//===============================================
int start()
{
   timestart=GetTickCount();
   for (int i=0;i<N;i++) 
   {  
   PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, 
                        ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0);
   PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, 
                       ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
   TDIHigh = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                      RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, UseAlerts, 1, 0);
   TDILow = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                     RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 3, 0);
   RSIPriceLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                           RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 4, 0);
   TradeSignalLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, 
                              RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 5, 0);
   }
   timestop=GetTickCount();
   //---
   Comment(" Calculation ",N," times was =  ",timestop-timestart," millisec \n",
           " One iteration was = ",(timestop-timestart)/(N-1)," millisec");
   return(0);
}
//---
Файлы:
testing_1.zip  4 kb
 
artmedia70:

А где была линия индикатора на момент закрытия Sell ?

Все как есть на скрине. Канал не успел перерисоваться.
 
paladin80, Ваш скрипт два раза мой комп выключил!
Причина обращения: