[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 463

 
nemo811:

Was bedeutet das?

?

Ich habe es ausprobiert - es funktioniert nicht.


Schwund, nach dem Eröffnungspreis, mindestens 30 für eine 5!
 
borilunad:

Schwankung, nach dem Eröffnungspreis, mindestens 30 für eine 5!
Ah, ich verstehe, was Sie meinen.Ich habe die Abweichung eingestellt.
 
nemo811:
Das war meine Idee. Ich werde es jetzt versuchen. Ich danke Ihnen.

Außerdem sind einige Klammern nicht korrekt platziert:

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

und wir müssen auch berücksichtigen, dass es im zweiten Zyklus zu einer Überallokation von Aufträgen kommt und nach dem Ende des zweiten Zyklus (wenn es sich nicht um einen Tester handelt), kann SMB zum Beispiel != OrderSymbol() sein.

 
TarasBY:

Außerdem sind einige Klammern nicht korrekt platziert:

und Sie müssen auch berücksichtigen, dass es im zweiten Zyklus eine Überallokation von Aufträgen gibt und nach dem Ende des zweiten Zyklus (wenn es sich nicht um einen Tester handelt), könnte SMB zum Beispiel != OrderSymbol() sein.

Bravo! Ihre Variante funktioniert.

Ich danke Ihnen von ganzem Herzen.


borilunad- auch Ihnen vielen Dank.

 
TarasBY:

Außerdem sind einige der Klammern falsch:

Ich habe die Klammern in meiner eigenen Version richtig gesetzt und es hat auch funktioniert.

Nochmals vielen Dank.

 

Granit77

Da bin ich anderer Meinung. Es ist nicht nötig, über mql hinauszugehen und den EA aus dem Chart zu entfernen. Es genügt, den Handel programmatisch zu blockieren, indem man dies im EA-Code vorsieht.

Zhunko:
Ja, genau! Ausnahme nur bei Fernsteuerung.

Danke für das Feedback, aber ich weiß immer noch nicht, was besser ist, und ich habe mich entschieden:

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

Jetzt habe ich noch eine Frage: Was soll ich in den Code einfügen, damit es nicht sofort losgeht, sondern erst nach einer bestimmten Anzahl von Auslösungen (z.B.: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);
}

Vielen Dank im Voraus

 

Hallo!

Ich habe begonnen, einen EA für den Aroon-Indikator zu erstellen. Ich wollte noch nie einen Indikator verwenden, der nicht bereits in MT4 enthalten ist. ICH KANN ES NICHT ZUM LAUFEN BRINGEN: (((((

Ich kann einfach keinen Hinweis bekommen oder auf meine Fehler hinweisen.

Dateien:
 
Sarguss:

Hallo!

Ich habe begonnen, einen EA für den Aroon-Indikator zu erstellen. Ich wollte noch nie einen Indikator verwenden, der nicht bereits in MT4 enthalten ist. ICH KANN ES NICHT ZUM LAUFEN BRINGEN: (((((

Ich kann keinen Hinweis bekommen oder auf meine Fehler hinweisen.

Dies ist ein SEHR interessanter Code:

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() und Lowest() sind benutzerdefinierte Funktionen? Wenn nicht, wo haben Sie eine solche Konstruktion gefunden?
Wenn Sie Werte aus dem Indikator abrufen möchten, sollten Sie die Funktion iCustom() verwenden.

 
TarasBY:

Dies ist ein SEHR interessanter Code:

Sind Highest() und Lowest() benutzerdefinierte Funktionen? Wenn nicht, wo haben Sie ein solches Konstrukt gefunden?
Wenn Sie Werte aus dem Indikator abrufen möchten, sollten Sie die Funktion iCustom() verwenden.

Das habe ich dem Indikator entnommen. Muss lustig sein :)

Ist dies der einzige Fehler?

Wenn ich den Expert Advisor auf Demo stelle, sagt er "2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: ungültige ganze Zahl als Parameter 2 für iLowest-Funktion

2012.10.26 21:49:56 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: ungültige Integer-Zahl als Parameter 2 für iHighest-Funktion" Aber der Schnittpunkt Up & Down funktioniert.

 
TarasBY:

Dies ist ein SEHR interessanter Code:

Highest() und Lowest() sind eigene Funktionen? Wenn nein, wo haben Sie ein solches Konstrukt ausgegraben?
Wenn Sie Werte aus dem Indikator abrufen möchten, sollten Sie die Funktion iCustom() verwenden.

Ich entschuldige mich für die dummen Fragen und danke Ihnen.

Schas wikidid.

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 300+Aroon CADJPY,H1: benutzerdefinierter Indikatorname muss ein String sein

2012.10.26 21:59:19 2012.10.22 23:59 Trommel 150+Aroon CADJPY,H1: ungültige Integerzahl als Parameter 2 für Indikatoraufruf-Funktion