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

 
DhP:

Попробуй так:

Спасибо. Буду пробовать
 

День добрый.

1. Как выразить результат сделки, т.е. прибыльная она была или убыточная? Например, последняя?

2. Как провести виртуальную сделку и  учесть её результат (знак) ?

 
inoy:

День добрый.

1. Как выразить результат сделки, т.е. прибыльная она была или убыточная? Например, последняя?

2. Как провести виртуальную сделку и учесть её результат (знак) ?

1. Посмотрите эти 2 функции:

isCloseLastPosByStop
isCloseLastPosByTake

2. Для виртуальной сделки есть очень простой способ. Повысьте размер депозита раз в 100, ну скажем вместо преславутых 1000 баксов возьмите 100000. А лоты виртуальной позиции уменьшите до предела - до 0,01, например, при рабочем лоте, например 10. 0,01 от 10 - это десятая доля процента - совсем незаметные убытки и прибыли.

Знак сделки: isLossLastPos

 
sss2019:

Помогите решить задачу, почему если в цикле всего 2 прохода i сначала равна 0, а затем сразу равна 4?

Из этого скрипта алерт выводит 0, 4.

Ну, наверное, патамушта:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)     // а других точно нет?
      {
.............
      Alert(i);
.............
      }
.............
    }

Может буит лутше так:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    Alert(i);
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }
 
DmitriyN:

1. Посмотрите эти 2 функции:

isCloseLastPosByStop
isCloseLastPosByTake

2. Для виртуальной сделки есть очень простой способ. Повысьте размер депозита раз в 100, ну скажем вместо преславутых 1000 баксов возьмите 100000. А лоты виртуальной позиции уменьшите до предела - до 0,01, например, при рабочем лоте, например 10. 0,01 от 10 - это десятая доля процента - совсем незаметные убытки и прибыли.

Знак сделки: isLossLastPos


Спасибо. Но для виртуальных входов наверняка должен быть более изящный вариант. " Повысьте размер депозита раз в 100" - боюсь, на реале у меня нет такой возможности)). Профи, не проходите мимо!
 
inoy:

Спасибо. Но для виртуальных входов наверняка должен быть более изящный вариант. " Повысьте размер депозита раз в 100" - боюсь, на реале у меня нет такой возможности)). Профи, не проходите мимо!

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles
 
Vinin:

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles

Спасибо.
 
DhP:

Попробуй так:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.

Добрый день.Попробовал исправить теперь сова делает только одну сделку закрывается по стоп лосу и всё других сделок больше не открывает.Подскажите где что не так

Файлы:
 
artemka_1981:

Добрый день.Попробовал исправить теперь сова делает только одну сделку закрывается по стоп лосу и всё других сделок больше не открывает.Подскажите где что не так

if(OrdersTotal()==0)GO=true;
 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}
DhP:

Здравствуйте . нечего не получается.Извените всё нормально просто я ступил.Большое спасибо
Причина обращения: