Movlat Baghiyev: 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; // voidStart(){
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(); // тут закроются все ордера и бай и селл } }
So wird das Los berechnet.MaximumRisk==100 . ich möchte, dass das Los automatisch bis zum Maximum berechnet wird.Ich habe MaximumRisk==100 geschrieben, um das maximal mögliche Lot bei Handelseröffnung zu berechnen. Wie oft ist das korrekt?
Hier ist eine Variante der Losberechnung.MaximumRisk==100: Es muss automatisch für jedes Los berechnet werden.Ich habe MaximumRisk==100 vorgeschrieben, um das maximal mögliche Lot bei Handelseröffnung zu berechnen.
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.
int MaximumRisk=100; double lots,lotstep,free,margin, lotmin, 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.
int MaximumRisk=100; double lots,lotstep,free,margin, lotmin, lotmax;
if (lots < lotmin) lots = lotmin; if (lots > lotmax) lots = lotmax;
Diese Option funktioniert nicht so, wie sie sollte... Ein Geschäft mit der maximal möglichen Menge zu öffnen, und nach dem Schließen des zweiten nicht öffnen, schreibt nicht genug Geld...
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?
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.
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?
Und von dem, was übertragen wird, ist es unmöglich, Code zu schreiben, die plattformübergreifende Arbeit wird, gibt es keinen Unterschied in der Aufgabe, die Symbole in den beiden Plattformen.
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?