Статус
Закрыто для дальнейших ответов.

borobor

Элитный участник
Здравствуйте тестировал на валюте GBPUSD,постоянно сливает,решил попробовать поменять ордера на buylimit и selllimit, в итоге советник получился сливным на 87%.Может у кого есть идеи как его развернуть,т.е. сделать на 87 % прибыльным TP и SL 50 пунктов

Посмотреть вложение 173603
поменяй советник:)
 

arkan4

Новичок форума
ДоброгоДня!!!

Вопрос к програмистам и всем кто в этом понимает...
прилагаю скрипт и к нему описание... посмотрите пожалуйста может можно из него зделать чудо чтоб он работал всё точ в точ как счас работает только устанавливал ордера с появлением каждой новой свечки на том таймврейме где будет установлен. Приделать к нему магик для совмесной работы с другими советниками и ваще нада посмотреть чтоб он на пятизнаке тош работал а то чёта на пятизнаке не запускается ... если сможет кто буду признателен...
 

Вложения

  • 2 StopOrders.mq4
    3,9 КБ · Просмотры: 32
  • Документ Microsoft Office Word.docx
    12,2 КБ · Просмотры: 21
Последнее редактирование:

samwin

Интересующийся
СРОЧНО! Всем привет уважаемые программисты, могли бы вы сделать стрелку к индикатору, когда цена касается верхнего или нижнего уровня, индикатор должен выдавать стрелку, как на примере на рисунке ниже

и желательно чтобы всяких цифр возле названия индикатора не было

849fb7e952faf9b04b949d980d127208.png

849fb7e952faf9b04b949d980d127208.png


PHP:
//+------------------------------------------------------------------+
//|                                              Cronex T RSI BB.mq4 |
//|                                     Copyright © 2008-10, Cronex. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2008-10, Cronex"
#property  link      "http://www.metaquotes.net/"
//----
#property  indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 DarkOrange
#property indicator_color2 SteelBlue
#property indicator_color3 Blue
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Blue
#property indicator_color7 Red

#property indicator_width1 2
#property indicator_width6 2
#property indicator_width7 2
//-----Level lines   
#property  indicator_level1  10
#property  indicator_level2 -10
//#property  indicator_level3 -10
//----
extern int     RSIPeriod=16;
extern double  TCurvature=0.618;
extern int     MAPeriod=10;
extern int     BandsPeriod=20;
extern int     BandsDeviations=2;
extern int     BandsShift=0;

//----
double RSITArray[];
double RSIArray[];
double BBMDArray[];
double BBUPArray[];
double BBDNArray[];
double MaxArray[];
double MinArray[];

double e1,e2,e3,e4,e5,e6;
double c1,c2,c3,c4;
double n,w1,w2,b2,b3;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators setting

   SetIndexBuffer(0,RSITArray);
   SetIndexBuffer(1,RSIArray);
   SetIndexBuffer(2,BBMDArray);
   SetIndexBuffer(3,BBUPArray);
   SetIndexBuffer(4,BBDNArray);
   SetIndexBuffer(5,MaxArray);
   SetIndexBuffer(6,MinArray);
   
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   
   SetIndexStyle(2,DRAW_LINE);   
   SetIndexStyle(3,DRAW_LINE,STYLE_DOT,1);
   SetIndexStyle(4,DRAW_LINE,STYLE_DOT,1);

   SetIndexStyle(5,DRAW_HISTOGRAM);  
   SetIndexStyle(6,DRAW_HISTOGRAM);
   
   SetIndexEmptyValue(5,0.0);
   SetIndexEmptyValue(6,0.0);
//---- name for DataWindow and indicator subwindow label
   SetIndexLabel(0,"RSI T");
   SetIndexLabel(1,"RSI");
   SetIndexLabel(2,"BB Middle");
   SetIndexLabel(3,"BB Upper");
   SetIndexLabel(4,"BB Lower");
   SetIndexLabel(5,"Max Point");   
   SetIndexLabel(6,"Min Point");  
   //
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   IndicatorShortName("Cronex T RSI BB Signal("+RSIPeriod+")");   
   
//---- variable reset
   e1=0; e2=0; e3=0; e4=0; e5=0; e6=0;
   c1=0; c2=0; c3=0; c4=0;
   n=0;
   w1=0; w2=0;
   b2=0; b3=0;
   //
   b2=TCurvature*TCurvature;
   b3=b2*TCurvature;
   c1=-b3;
   c2=(3*(b2+b3));
   c3=-3*(2*b2+TCurvature+b3);
   c4=(1+3*TCurvature+b3+3*b2);
   n=RSIPeriod;
   //
   if (n<1) n=1;
   n=1 + 0.5*(n-1);
   w1=2/(n + 1);
   w2=1 - w1;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int Limit=300;
   double Max;
   int MaxB;
//---- indicator calculation
   for(int i=Limit; i>=0; i--)
     {
      RSIArray[i]=(
                    iRSI(NULL,0,RSIPeriod+4*0,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*1,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*2,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*3,PRICE_WEIGHTED,i))/4-50;      

      e1=w1*RSIArray[i] + w2*e1;
      e2=w1*e1 + w2*e2;
      e3=w1*e2 + w2*e3;
      e4=w1*e3 + w2*e4;
      e5=w1*e4 + w2*e5;
      e6=w1*e5 + w2*e6;
//=====================================================
      RSITArray[i]=c1*e6 + c2*e5 + c3*e4 + c4*e3;
//=====================================================      
     }

//================================================================================================ 
    for(int j=Limit-1;j>=0;j--)
      {
      BBMDArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_MAIN,j);
      BBUPArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_UPPER,j);
      BBDNArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_LOWER,j);
      
      if(RSIArray[j]>BBUPArray[j])MaxArray[j]=RSIArray[j]-BBUPArray[j];
      if(RSIArray[j]<BBDNArray[j])MinArray[j]=RSIArray[j]-BBDNArray[j];
      
//      if(RSITArray[j]>BBMDArray[j])MaxArray[j]=RSITArray[j]-BBMDArray[j];
//      if(RSITArray[j]<BBMDArray[j])MinArray[j]=RSITArray[j]-BBMDArray[j];      
      
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Последнее редактирование:

SYSTEMOFF

Интересующийся
Помогите решить проблему с открытием ордеров

Доброго времени суток, господа, помогите довести до ума советник. Суть проблемы такова:надо добавить функцию, чтобы после закрытия сделки в buy, например, следующая могла быть только в Sell и наоборот после сделки в Sell мог открываться только Buy . Как это сделать подскажите, текст советника ниже:
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

extern double Lots = 1;
extern int Slippage = 5;
extern string comment = "WT BOT";
extern int Magic = 123;
extern int startHour =10;
extern int endHour =18;
extern int tf_filtr = 60;
extern int takeprofit = 10;
extern int stoploss = 5;


extern string A2 = "--- Параметры индикатора ---";
extern int T3Period = 8;
extern int T3Price = PRICE_CLOSE;
extern double b = 0.618;
extern string TimeFrame = "current time frame";
extern int BarCount = 1500;

//----- Параметры индикаторов -----
extern string A = "--- СИГНАЛЫ ---";
extern bool ByBar = true; //Для побарового режима. При открытии свечи. Иначе - на каждом тике.
extern int SignalBar = 1; //Бар, на котором проверяется сигнал индикатора



double Sig1, Sig2, SL, TP;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits == 5)
{
takeprofit *= 10;
stoploss *= 10;
Slippage *= 10;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{



// индикатор в осциллографе
Sig1 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 0, 1), Digits); //лайм
Sig2 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 1, 1), Digits); //магнета


int Sig = Signal();

if((Sig == 1 && High[1] > High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountSell() > 0)) //лайм и есть ордера на продажу. то закрываем
{
for (int i = OrdersTotal ()-1; i >=0; i--)
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderMagicNumber () == Magic && OrderType() == OP_SELL )
OrderClose (OrderTicket(), OrderLots (), Ask, Slippage, Black);
}

}

}

if((Sig == -1 && Low[1] < Low[2])&&( Sig1 == EMPTY_VALUE && Sig2 != EMPTY_VALUE) && (CountBuy() > 0))//магнета и есть ордера на покупку. то закрываем

{
for (i = OrdersTotal ()-1; i >=0; i--)
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderMagicNumber () == Magic && OrderType() == OP_BUY )
OrderClose (OrderTicket(), OrderLots (), Bid, Slippage, Black);
}

}

}
if((Hour()>=startHour && Hour()<endHour)&&(Sig == 1 && High[1] > High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountBuy() == 0))//зеленый и нет ордера на покупку. то открываем
{
SL = NormalizeDouble(Low[1]-stoploss*Point,Digits);
TP = NormalizeDouble(High[1]+takeprofit*Point,Digits);

OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, comment, Magic, 0, Blue);

}
if((Hour()>=startHour && Hour()<endHour)&&(Sig == -1 && Low[1] < Low[2])&&( Sig1 == EMPTY_VALUE && Sig2 != EMPTY_VALUE)&&( CountSell() == 0))//красный и нет ордера на продажу. то открываем
{
SL = NormalizeDouble(High[1]+stoploss*Point,Digits);
TP = NormalizeDouble(Low[1]-takeprofit*Point,Digits);

OrderSend (Symbol(), OP_SELL, Lots, Bid, Slippage, SL, TP, comment, Magic, 0, Red);


}

return(0);
}
//+------------------------------------------------------------------+
int CountSell ()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >= 0; trade--)
{
OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic)
{
if (OrderType () == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+

int CountBuy ()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >= 0; trade--)
{
OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic)
{
if (OrderType () == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//T3_08
int Signal()
{
double L1,L2,L1a,L2a;

L1 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar);
L2 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar);
L1a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar+1);
L2a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar+1);

if(L1 < L2 && L1a < L2a) return(+1);
if(L1 > L2 && L1a > L2a ) return(-1);
return(0);
}
 

zhserg

Местный знаток
надо добавить функцию, чтобы после закрытия сделки в buy, например, следующая могла быть только в Sell и наоборот после сделки в Sell мог открываться только Buy . Как это сделать подскажите

Вот очень полезная ссылка _http://forum.mql4.com/ru/38949 . Немного сообразительности и дело "в шляпе" :)
 

samwin

Интересующийся
Ой, на скрине стрелки не правильно нарисовал, наоборот должно, когда индикатор коснулся верхнего уровня то стрелка вниз должна, когда индикатор коснулся нижнего уровня то стрелка вверх)

СРОЧНО! Всем привет уважаемые программисты, могли бы вы сделать стрелку к индикатору, когда цена касается верхнего или нижнего уровня, индикатор должен выдавать стрелку, как на примере на рисунке ниже

и желательно чтобы всяких цифр возле названия индикатора не было

849fb7e952faf9b04b949d980d127208.png

849fb7e952faf9b04b949d980d127208.png


PHP:
//+------------------------------------------------------------------+
//|                                              Cronex T RSI BB.mq4 |
//|                                     Copyright © 2008-10, Cronex. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2008-10, Cronex"
#property  link      "http://www.metaquotes.net/"
//----
#property  indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 DarkOrange
#property indicator_color2 SteelBlue
#property indicator_color3 Blue
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Blue
#property indicator_color7 Red

#property indicator_width1 2
#property indicator_width6 2
#property indicator_width7 2
//-----Level lines   
#property  indicator_level1  10
#property  indicator_level2 -10
//#property  indicator_level3 -10
//----
extern int     RSIPeriod=16;
extern double  TCurvature=0.618;
extern int     MAPeriod=10;
extern int     BandsPeriod=20;
extern int     BandsDeviations=2;
extern int     BandsShift=0;

//----
double RSITArray[];
double RSIArray[];
double BBMDArray[];
double BBUPArray[];
double BBDNArray[];
double MaxArray[];
double MinArray[];

double e1,e2,e3,e4,e5,e6;
double c1,c2,c3,c4;
double n,w1,w2,b2,b3;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators setting

   SetIndexBuffer(0,RSITArray);
   SetIndexBuffer(1,RSIArray);
   SetIndexBuffer(2,BBMDArray);
   SetIndexBuffer(3,BBUPArray);
   SetIndexBuffer(4,BBDNArray);
   SetIndexBuffer(5,MaxArray);
   SetIndexBuffer(6,MinArray);
   
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   
   SetIndexStyle(2,DRAW_LINE);   
   SetIndexStyle(3,DRAW_LINE,STYLE_DOT,1);
   SetIndexStyle(4,DRAW_LINE,STYLE_DOT,1);

   SetIndexStyle(5,DRAW_HISTOGRAM);  
   SetIndexStyle(6,DRAW_HISTOGRAM);
   
   SetIndexEmptyValue(5,0.0);
   SetIndexEmptyValue(6,0.0);
//---- name for DataWindow and indicator subwindow label
   SetIndexLabel(0,"RSI T");
   SetIndexLabel(1,"RSI");
   SetIndexLabel(2,"BB Middle");
   SetIndexLabel(3,"BB Upper");
   SetIndexLabel(4,"BB Lower");
   SetIndexLabel(5,"Max Point");   
   SetIndexLabel(6,"Min Point");  
   //
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   IndicatorShortName("Cronex T RSI BB Signal("+RSIPeriod+")");   
   
//---- variable reset
   e1=0; e2=0; e3=0; e4=0; e5=0; e6=0;
   c1=0; c2=0; c3=0; c4=0;
   n=0;
   w1=0; w2=0;
   b2=0; b3=0;
   //
   b2=TCurvature*TCurvature;
   b3=b2*TCurvature;
   c1=-b3;
   c2=(3*(b2+b3));
   c3=-3*(2*b2+TCurvature+b3);
   c4=(1+3*TCurvature+b3+3*b2);
   n=RSIPeriod;
   //
   if (n<1) n=1;
   n=1 + 0.5*(n-1);
   w1=2/(n + 1);
   w2=1 - w1;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int Limit=300;
   double Max;
   int MaxB;
//---- indicator calculation
   for(int i=Limit; i>=0; i--)
     {
      RSIArray[i]=(
                    iRSI(NULL,0,RSIPeriod+4*0,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*1,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*2,PRICE_WEIGHTED,i)+
                    iRSI(NULL,0,RSIPeriod+4*3,PRICE_WEIGHTED,i))/4-50;      

      e1=w1*RSIArray[i] + w2*e1;
      e2=w1*e1 + w2*e2;
      e3=w1*e2 + w2*e3;
      e4=w1*e3 + w2*e4;
      e5=w1*e4 + w2*e5;
      e6=w1*e5 + w2*e6;
//=====================================================
      RSITArray[i]=c1*e6 + c2*e5 + c3*e4 + c4*e3;
//=====================================================      
     }

//================================================================================================ 
    for(int j=Limit-1;j>=0;j--)
      {
      BBMDArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_MAIN,j);
      BBUPArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_UPPER,j);
      BBDNArray[j]=iBandsOnArray(RSITArray,0,BandsPeriod,BandsDeviations,BandsShift,MODE_LOWER,j);
      
      if(RSIArray[j]>BBUPArray[j])MaxArray[j]=RSIArray[j]-BBUPArray[j];
      if(RSIArray[j]<BBDNArray[j])MinArray[j]=RSIArray[j]-BBDNArray[j];
      
//      if(RSITArray[j]>BBMDArray[j])MaxArray[j]=RSITArray[j]-BBMDArray[j];
//      if(RSITArray[j]<BBMDArray[j])MinArray[j]=RSITArray[j]-BBMDArray[j];      
      
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

samwin

Интересующийся
http://forexsystemsru.com/873334-post11168.html

тут перепутал на скрине со стрелкми) наоборот , чтобы когда индикатор касался верхнего уровня, надо что выхадила стрелка с сигналов на продажу и нижниго уровня на покупку
 

Sergey55555555

Почетный гражданин
День добрый.
Подскажите/покажите, пожалуйста.

1. Куда поставить этот код
PHP:
//фильтр время 
 if(use_work_time) 
 { 
  if(Start>Stop) 
 { 
 if(Hour()>=Stop && Hour()<Start) return; 
 } 
  
 if(Start<Stop) 
 { 
 if(Hour()<Start || Hour()>=Stop) return; 
 } 
 }
а то что-то никак не найду место :facepalm:
В самом начале планирую вот так:
PHP:
extern string V_R = "Время работы"; 
extern bool use_work_time = false; 
extern int Start = 0; 
extern int Stop = 24;

2. Как сделать, чтобы "BackFootSteps" понимал дроби?
типа не просто 1 или 2, а 1,15.

Я не кодер, поэтому просьба, по возможности, прямо пальцем показать на строчку куда и что :)
 

Вложения

  • DSM_FootStep_Expert.mq4
    25 КБ · Просмотры: 46

zhserg

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

Конкретно под вашу задачу нужна эта функция _http://forum.mql4.com/ru/38949/page4#434227 .

Перед открытием вашего ордера проверяйте этой функцией тип последнего закрытого ордера.
 

zhserg

Местный знаток
Куда поставить этот код
Можно сразу после строчек
PHP:
//+-------------------------------------------------------------------------------------+
//| Функция START эксперта                                                              |
//+-------------------------------------------------------------------------------------+
int start()
  {
Как сделать, чтобы "BackFootSteps" понимал дроби?
типа не просто 1 или 2, а 1,15.
строку
PHP:
extern int BackFootSteps = 1;
поменять на
PHP:
extern double BackFootSteps = 1;
 

parahok

Активный участник
помощь в програмировании

Здравствуйте.Объясните пожалуйста по поводу доработки.У меня есть сов который без ключа не работает.Когда вводиш ключ он начинает работать.А можно нечто подобное прописать в индикаторе что бы индикатор тоже без ключа не работал.Как это сделать?Если можно напишите пожалуйста кусок кода .И куда его вставить в индикаторе.Кусок кода который написан в советнике прилагаю в описании
 

Вложения

  • Новый текстовый документ.txt
    522 байт · Просмотры: 24

Sergey55555555

Почетный гражданин
Можно сразу после строчек
Всё работает правильно,
СПАСИБО! :rolf:
+++++++++++++++++++++++++++++++++++++

Но тут же возник другой вопрос.
Как удалять не сработавшие отложки при начале "запретного" времени?
 

Вложения

  • ВТ 13-14.gif
    ВТ 13-14.gif
    10,5 КБ · Просмотры: 34

Рюня

Почетный гражданин
Здравствуйте! Ищу эти индикаторы в mq4. Благодарю за внимание и помощь.
 

Вложения

  • Trend Edge 2.ex4
    9,8 КБ · Просмотры: 67
  • Medium-term scalper.ex4
    19,6 КБ · Просмотры: 71

zhserg

Местный знаток
Всё работает правильно,
СПАСИБО! :rolf:
+++++++++++++++++++++++++++++++++++++

Но тут же возник другой вопрос.
Как удалять не сработавшие отложки при начале "запретного" времени?

Тут уже парой строк не обойтись...
 

SYSTEMOFF

Интересующийся
Конкретно под вашу задачу нужна эта функция _http://forum.mql4.com/ru/38949/page4#434227 .

Перед открытием вашего ордера проверяйте этой функцией тип последнего закрытого ордера.
Спасибо
Я ее изменил под привычный мне вид, как мне показалось, нужно для моей ситауции, и сделал две функции чтобы проверка выполнялась отдельно на бай и отдельно на селл, но чтото не так, советник проводит две сделки одну на buy, другую на sell и останавливается, привожу код для sell ниже:

PHP:
int CountSellHistory ()
{
  int      i, k=OrdersHistoryTotal()-1, r=0;


  for (i=0; i<k; i--) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
    {
      if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic) 
      {
        if (OrderType()==OP_SELL) 
        {
            r=OrderType();
          }
        }
      }
    }
  
  return(r);
}
 

vlad_123

Местный знаток
Спасибо
Я ее изменил под привычный мне вид, как мне показалось, нужно для моей ситауции, и сделал две функции чтобы проверка выполнялась отдельно на бай и отдельно на селл, но чтото не так, советник проводит две сделки одну на buy, другую на sell и останавливается, привожу код для sell ниже:

PHP:
int CountSellHistory ()
{
  int      i, k=OrdersHistoryTotal()-1, r=0;


  for (i=0; i<k; i--) 
  {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
    {
      if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic) 
      {
        if (OrderType()==OP_SELL) 
        {
            r=OrderType();
          }
        }
      }
    }
  
  return(r);
}

Вместо
Код:
for (i=0; i<k; i--)
поставить
Код:
for (i=0; i<k; i++)
а вместо
Код:
r=OrderType();
поставить
Код:
r++;
Тогда эта функция будет подсчитывать количество закрытых OP_SELL
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Верх