[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 463

 
nemo811:

Cosa significa?

?

Provato - non funziona.


Slippage, dopo il prezzo di apertura, almeno 30 per un 5!
 
borilunad:

Slippage, dopo il prezzo di apertura, almeno 30 per un 5!
Ah, capisco cosa vuoi dire.Ho il set di deviazione.
 
nemo811:
Questa era la mia idea. Lo proverò ora. Grazie.

Inoltre, alcune parentesi non sono posizionate correttamente:

    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);
            }            
        }
    }

e dobbiamo anche tener conto che nel secondo ciclo c'è una riassegnazione dell'ordine e dopo la fine del secondo ciclo (se non è un tester), per esempio, SMB può essere != OrderSymbol().

 
TarasBY:

Inoltre, alcune parentesi non sono posizionate correttamente:

e bisogna anche tener conto che nel secondo ciclo c'è una sovrallocazione degli ordini e dopo la fine del secondo ciclo (se non è un tester), per esempio, SMB potrebbe essere != OrderSymbol().

Bravo! La tua variante funziona.

Grazie sinceramente.


borilunad- grazie anche a te.

 
TarasBY:

Inoltre, alcune parentesi sono sbagliate:

Ho messo le parentesi correttamente nella mia versione e ha funzionato.

Grazie ancora.

 

granit77

Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trading fornendo questo nel codice dell'EA.

Zhunko:
Sì! Giusto! Eccezione solo per il controllo remoto.

Grazie per il feedback, ma non so ancora quale sia meglio e ho scelto:

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

Ora ho un'altra domanda: cosa dovrei aggiungere al codice, in modo che non scatti immediatamente, ma dopo un certo numero di scatti (per esempio: 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);
}

Grazie in anticipo

 

Ciao!

Ho iniziato a costruire un EA per l'indicatore Aroon. Non ho mai voluto usare un indicatore che non sia già incluso in MT4. NON RIESCO A FARLO FUNZIONARE: (((((

Non riesco a trovare un suggerimento o a suggerire i miei errori.

File:
 
Sarguss:

Ciao!

Ho iniziato a costruire un EA per l'indicatore Aroon. Non ho mai voluto usare un indicatore che non sia già incluso in MT4. NON RIESCO A FARLO FUNZIONARE: (((((

Non posso avere un suggerimento o suggerire i miei errori.

Questo è un codice MOLTO interessante:

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() e Lowest() sono funzioni utente? Se no, dove avete trovato una tale costruzione?
Se volete ottenere valori dall'indicatore, dovreste usare la funzione iCustom().

 
TarasBY:

Questo è un codice MOLTO interessante:

Highest() e Lowest() sono funzioni personalizzate? Se no, dove ha trovato un tale costrutto?
Se volete ottenere valori dall'indicatore, dovreste usare la funzione iCustom().

Questo l'ho intuito dall'indicatore. Deve essere divertente :)

È l'unico bug?

Quando metto l'Expert Advisor su Demo, dice "2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: numero intero non valido come parametro 2 per la funzione iLowest

2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: numero intero non valido come parametro 2 per la funzione iHighest" Ma l'incrocio Up & Down funziona.

 
TarasBY:

Questo è un codice MOLTO interessante:

Highest() e Lowest() sono funzioni personalizzate? Se no, dove hai scovato un tale costrutto?
Se volete ottenere valori dall'indicatore, dovreste usare la funzione iCustom().

Mi scuso per le domande stupide e vi ringrazio.

Shas wikidid.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: nome indicatore personalizzato deve essere una stringa

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: numero intero non valido come parametro 2 per la funzione Indicator call