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

 
nemo811:

Имеете в виду 

 ?

Пробовал - не помогает. 


Slippage, после цены открытия, не менее 30 для 5-ки!
 
borilunad:

Slippage, после цены открытия, не менее 30 для 5-ки!
А, понял, о чём вы. Отклонение у меня задано.
 
nemo811:
Была такая мысля. Ща попробую. Благодарю.

А ещё скобки одни не правильно расставлены: 

    for (i=OrdersTotal()-1;i>=0;i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
        else
        {
            SMB = OrderSymbol();
            SchBuyLotsSMB = 0;
            SchSellLotsSMB = 0;
            for (ii=OrdersTotal()-1;ii>=0;ii--)
            {
                if (!OrderSelect (ii, SELECT_BY_POS, MODE_TRADES))
                {Alert ("Ошибка ", GetLastError(), " выбора ордера!");}
                else
                {
                    if (OrderSymbol() == SMB)
                    {
                        if (OrderType()==OP_BUY) {SchBuyLotsSMB +=OrderLots();}
                        if (OrderType()==OP_SELL) {SchSellLotsSMB += OrderLots();}
                    }
                }
            }
            MarketLotSMB=SchBuyLotsSMB-SchSellLotsSMB;
            if (MarketLotSMB == 0.0) continue;
            RefreshRates();
            if (MarketLotSMB<0)
            {
                MarketLotSMB = MathAbs (MarketLotSMB);
                Price = MarketInfo (SMB, MODE_ASK);
                OPENORDER ("Buy", SMB, MarketLotSMB, Price);
            }
            else if (MarketLotSMB>0)
            {
                Price = MarketInfo (SMB, MODE_BID);
                OPENORDER ("Sell", SMB, MarketLotSMB, Price);
            }            
        }
    }

 и ещё нужно учитывать, что во втором цикле идёт перевыделение ордеров и после окончания второго цикла (если это не тестер), например, SMB может быть != OrderSymbol().

 
TarasBY:

А ещё скобки одни не правильно расставлены:

и ещё нужно учитывать, что во втором цикле идёт перевыделение ордеров и после окончания второго цикла (если это не тестер), например, SMB может быть != OrderSymbol().

Браво! Ваш вариант работает.

Искренне благодарю. 


 borilunad - вам также спасибо.

 
TarasBY:

А ещё скобки одни не правильно расставлены: 

Поставил правильно скобки в своём варианте - тоже заработал.

Ещё раз благодарю. 

 

granit77

Не согласен. Незачем выходить за пределы mql, незачем удалять советник с чарта. Достаточно программно блокировать торговлю, предусмотрев это в коде советника.

Zhunko:
Да! Правильно! Исключение только для удалённого управления.

Спасибо за отклик, но я так и не понял что лучше и выбрал:

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

Теперь возник другой вопрос. что добавить в код, чтобы он вырубался не сразу, а после определенного количества сробатывания (например:Kol=3)

#property show_inputs
#include <WinUser32.mqh>
extern int Kol=3;

int start()
{
OrderSend(Symbol(),OP_SELL,0.05,Bid,333,0,0,"Тест",0,0,CLR_NONE);
while(!IsTradeAllowed()) Sleep(1000);
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
return(0);
}

Заранее спасибо

 

Здравствуите!

Начел собирать советник под индикатор Aroon.  Некотда недовадилось изпользивать индикатор невключенний в MT4. НЕПОЛУЧАЕТСЯ:(((((

Может кто может хоть намикнуть или подсказать мои  ошибки.

Файлы:
 
Sarguss:

Здравствуите!

Начел собирать советник под индикатор Aroon.  Некотда недовадилось изпользивать индикатор невключенний в MT4. НЕПОЛУЧАЕТСЯ:(((((

Может кто может хоть намикнуть или подсказать мои  ошибки.

Вот это ОЧЕНЬ интересный код:

Up1 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,0);
 Up2 = Highest(Symbol(),"Aroon_Horn2",MODE_HIGH,Aroon_Period-1,1);
      Dn1 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,0);
   Dn2 = Lowest(Symbol(),"Aroon_Horn2",MODE_LOW,Aroon_Period-1,1);

 Highest() и Lowest() - это пользовательские функции? Если нет, то где Вы такую конструкцию откопали???
Если Вы хотите получить значения из индикатора, то нужно использовать функцию iCustom().

 
TarasBY:

Вот это ОЧЕНЬ интересный код:

 Highest() и Lowest() - это пользовательские функции? Если нет, то где Вы такую конструкцию откопали???
Если Вы хотите получить значения из индикатора, то нужно использовать функцию iCustom().

Ето я интуитивно с индикатора. Наверное смешно:)

Ето единственная ошигка?

Когда ставлю советник на Демо, видает "2012.10.26 21:49:56 2012.10.22 23:59  Trommel 300+Aroon CADJPY,H1: invalid integer number as parameter 2 for iLowest function

2012.10.26 21:49:56 2012.10.22 23:59  Trommel 300+Aroon CADJPY,H1: invalid integer number as parameter 2 for iHighest function" Но по пересечениям Up & Down работает.

 
TarasBY:

Вот это ОЧЕНЬ интересный код:

 Highest() и Lowest() - это пользовательские функции? Если нет, то где Вы такую конструкцию откопали???
Если Вы хотите получить значения из индикатора, то нужно использовать функцию iCustom().

Я извеняюсь за глупие вопроси и благодарен. 

Шас викидивает

 2012.10.26 21:59:19 2012.10.22 23:59  Trommel 300+Aroon CADJPY,H1: custom indicator name must be a string

2012.10.26 21:59:19 2012.10.22 23:59  Trommel 150+Aroon CADJPY,H1: invalid integer number as parameter 2 for Indicator call function

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