Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Schließungsbedingung verwendet ein umgekehrtes Signal, aber es funktioniert nicht. yIhre Geschäfte werden nur bei Stop oder Takei geschlossen. Was ist der Grund?
Falsch.
Ihre Bedingung sollte am Anfang stehen und die Schließfunktion nach dem Start.
int i;
//
void Start(){
if ((FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) // тут так надо бы Bid<NormalizeDouble(FMA1-Distanse*GetPoint(),Digits)
|| (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint())){
for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) CloseOpBuySell(); // тут закроются все ордера и бай и селл
}
}
}// end start
void CloseOpBuySell()
{
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic ) //свой магик
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,LawnGreen); {continue;}
}
if(OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,LawnGreen); {continue;}
}
}
}
}
return;
}
Falsch.
Wenn Sie nach einzelnen Bedingungen abschließen müssen und nicht alle auf einmal, dann sollte die Abschlussfunktion anders aussehen.Sie sollten die Bedingung am Anfang und die Schließfunktion am Anfang haben.
Richtig, aber ich habe es bereits getan und ihm geschickt, also wird er nichts sagen.
{
//закрытие по МА-шкам
if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) CloseOpBuySell("BUY");
if (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint()) CloseOpBuySell("SELL");
return(0);
}
//----
//-----------------------------------+
void CloseOpBuySell(string TypeClose)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn )
{
if(TypeClose=="BUY")
{
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,LawnGreen);
}
if(TypeClose=="SELL")
{
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,LawnGreen);
}
}
}
}
}
Es ist besser, nach den verfügbaren Mitteln zu rechnen als nach dem Saldo. Andernfalls riskieren Sie, viel mehr zu bekommen, als Sie sich zum Zeitpunkt der Eröffnung eines Geschäfts leisten können.
Sie müssen auch die Abhängigkeit des Lot-Schrittes ausrechnen und dann prüfen, ob das Lot innerhalb der für das Konto zulässigen Höchst- und Mindest-Lots liegt.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Es ist besser, nach den verfügbaren Mitteln zu rechnen als nach dem Saldo. Andernfalls riskieren Sie, viel mehr zu bekommen, als Sie sich zum Zeitpunkt der Eröffnung eines Geschäfts leisten können.
Sie müssen auch die Abhängigkeit des Lot-Schrittes ausrechnen und dann prüfen, ob das Lot innerhalb der für das Konto zulässigen Höchst- und Mindest-Lots liegt.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Aufgeschoben:
Gevorg Hakobyan, 2016.12.08 15:26
Hallo. Wie kann ich eine Liste aller vorhandenen Währungspaare in Meta Trader 4 erhalten? Und wie kann ich mich über etwaige Änderungen in der Liste auf dem Laufenden halten?Aufgeschoben:
Gevorg Hakobyan, 2016.12.08 15:26
Hallo. Wie kann ich die Liste aller in Meta Trader 4 vorhandenen Währungspaare erhalten? Und wie erfährt man von etwaigen Änderungen in der Liste?SymboleGesamt
Gibt die Anzahl der verfügbaren (in MarketWatch ausgewählten oder aller) Symbole zurück.
intSymbolsTotal(
bool selected// true - nur Symbole in MarketWatch
);
Parameter
ausgewählt
[in] Anforderungsmodus. Kann die Werte true oder false annehmen.
Zurückgegebener Wert
Wenn selected true ist, wird die Anzahl der in MarketWatch ausgewählten Zeichen zurückgegeben. Wenn false, wird die Gesamtzahl aller Symbole zurückgegeben.
Aufgeschoben:
Gevorg Hakobyan, 2016.12.08 15:26
Hallo. Wie kann ich eine Liste aller vorhandenen Währungspaare in Meta Trader 4 erhalten? Und wie kann ich mich über etwaige Änderungen in der Liste auf dem Laufenden halten?