Es wurde eine weitere Funktion hinzugefügt. Sie müssen es nur in Echtzeit im Terminal überprüfen.
diese Version ist so - Im Tester spielen
Keine schlechte Funktion, das kann ich Ihnen sagen. Sie geht hierhin und dorthin, nimmt ihre Gewinne mit und kümmert sich einen Dreck darum.
Aber der Code muss noch optimiert werden, er funktioniert gut.
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool CloseLotBuy(void)
{
bool res=false;
double level;
double PROFIT_BUY=0.00;
PROFIT_BUY=m_position.Commission()+m_position.Swap()+m_position.Profit();
//---if(m_position.Symbol()==m_symbol.Name())
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
if(PROFIT_BUY<-TargetStopLoss || PROFIT_BUY>=TargetTakeProfit)
{
if(FreezeStopsLevels(level))
ClosePositions(POSITION_TYPE_BUY,level);
}
}
res=true;
}
//--- resultreturn(res);
}
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool CloseLotSell(void)
{
bool res=false;
double level;
double PROFIT_SELL=0.00;
PROFIT_SELL=m_position.Commission()+m_position.Swap()+m_position.Profit();
//---if(m_position.Symbol()==m_symbol.Name())
{
if(m_position.PositionType()==POSITION_TYPE_SELL)
{
if(PROFIT_SELL<-TargetStopLoss || PROFIT_SELL>=TargetTakeProfit)
{
if(FreezeStopsLevels(level))
ClosePositions(POSITION_TYPE_SELL,level);
}
}
res=true;
}
//--- resultreturn(res);
}
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool OpenLotBuy(void)
{
bool res=false;
double PROFIT_BUY=0.00;
CloseTikB=iClose(NULL,Period(),0);
OpenTikB=iOpen(NULL,Period(),0);
//---int total=PositionsTotal(); // количество открытых позицийfor(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positionsif(m_position.SelectByIndex(i)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name())
{
if(total>0)
{
ulong position_ticket=PositionGetTicket(total-1); // тикет позиции
}
if(total<limit_total_symbol)// количество открытых позиций
{
if(OpenTikB<CloseTikB)
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
PROFIT_BUY=PROFIT_BUY+m_position.Commission()+m_position.Swap()+m_position.Profit();
if(PROFIT_BUY<-TargetOpenLot)
{
double price=m_symbol.Ask();
for(uint y=0; y<maxLimits; y++)
{
//--- open positionif(m_trade.PositionOpen(m_symbol.Name(),ORDER_TYPE_BUY,InpLots,price,0.0,0.0))
printf("Position by %s to be opened",m_symbol.Name());
else
{
printf("Error opening BUY position by %s : '%s'",m_symbol.Name(),m_trade.ResultComment());
printf("Open parameters : price=%f,TP=%f",price,0.0);
}
res=true;
}
}
}
}
}
}
//--- resultreturn(res);
}
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool OpenLotSell(void)
{
bool res=false;
double PROFIT_SELL=0.00;
CloseTikS=iClose(NULL,Period(),0);
OpenTikS=iOpen(NULL,Period(),0);
//---int total=PositionsTotal(); // количество открытых позицийfor(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positionsif(m_position.SelectByIndex(i)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name())
{
if(total>0)
{
ulong position_ticket=PositionGetTicket(total-1); // тикет позиции
}
if(total<limit_total_symbol)// количество открытых позиций
{
if(OpenTikS>CloseTikS)
{
if(m_position.PositionType()==POSITION_TYPE_SELL)
{
PROFIT_SELL=PROFIT_SELL+m_position.Commission()+m_position.Swap()+m_position.Profit();
if(PROFIT_SELL<-TargetOpenLot)
{
double price0=m_symbol.Bid();
for(uint y=0; y<maxLimits; y++)
{
if(m_trade.PositionOpen(m_symbol.Name(),ORDER_TYPE_SELL,InpLots,price0,0.0,0.0))
printf("Position by %s to be opened",m_symbol.Name());
else
{
printf("Error opening SELL position by %s : '%s'",m_symbol.Name(),m_trade.ResultComment());
printf("Open parameters : price=%f,TP=%f",price0,0.0);
}
res=true;
}
}
}
}
}
}
//--- resultreturn(res);
}
//+------------------------------------------------------------------+
Ich habe es auf einem echten Konto ausprobiert, ich wollte einen kleinen Gewinn aus zwei offenen Positionen erzielen. 160 hatte ich in den Einstellungen eingegeben, ich dachte, es würde die größte Minusposition schließen, aber nein, es schloss
Ich habe versucht, die Position zu schließen, die 160 Gewinn gemacht hat, und habe beide Positionen geschlossen. Es stellt sich heraus, dass ich von der ersten offenen Position aus rechnen muss, indem ich das Minus eins hinzufüge.
#Eigenschaft Version "1.017"
Ich habe erst am fünften Tag herausgefunden, wie ich diese Funktion richtig nutzen kann. Jetzt schließt es auf den Gesamtgewinn auf ein Paar aller Buy oder Sell
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool ProfitOnTick(void)
{
bool res=false;
double PROFIT_BUY=0.00;
double PROFIT_SELL=0.00;
for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of open positions
{
string position_GetSymbol=PositionGetSymbol(i); // GetSymbol позицииif(position_GetSymbol==m_symbol.Name())
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
PROFIT_BUY=PROFIT_BUY+PositionGetDouble(POSITION_PROFIT);
}
else
{
PROFIT_SELL=PROFIT_SELL+PositionGetDouble(POSITION_PROFIT);
}
}
}
for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positionsif(m_position.SelectByIndex(i)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name())
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
if(PROFIT_BUY<-TargetStopLoss || PROFIT_BUY>=TargetTakeProfit) // if the profit
ClosePosition(m_position.Symbol()); // close a position by the specified symbo
}
res=true;
}
for(int u=PositionsTotal()-1; u>=0; u--) // returns the number of current positionsif(m_position.SelectByIndex(u)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name())
{
if(m_position.PositionType()==POSITION_TYPE_SELL)
{
if(PROFIT_SELL<-TargetStopLoss || PROFIT_SELL>=TargetTakeProfit) // if the profit
ClosePosition(m_position.Symbol()); // close a position by the specified symbo
}
res=true;
}
//--- resultreturn(res);
}
//+------------------------------------------------------------------+
Keine schlechte Funktion, sage ich Ihnen. Hier und da nimmt sie ihre Gewinne mit und schert sich einen Dreck darum.
Ich muss den Code ändern, damit es funktioniert - es scheint alles gut zu funktionieren
Ich kann keinen Code für diese Funktion erstellen, der in einem Terminal funktioniert. Ich möchte es an 4 Terminals ausprobieren, ich weiß nicht, was dabei herauskommen wird.
Ich kann keinen Code erstellen, damit diese Funktion in einem Terminal funktioniert. Ich möchte es an 4 Terminals ausprobieren, ich weiß nicht, was dabei herauskommen wird
All diese 4 Terminals - haben kein Ergebnis gebracht. Und im Allgemeinen, diese Funktion von Loss - ich kann den Code nicht schreiben.
Aber ich habe vor langer Zeit eine solche Logik der Arbeit geschaffen, nur mit horizontalen Linien. Es bleibt zu überlegen, was das Los vervielfachen würde
und von diesen horizontalen Linien wird eine Position eröffnet und die ersten horizontalen Linien gesetzt - und so wird es wiederholt, bis der Preis in der Lage ist, sie zu erreichen Abbildung 2
Hier wird - in den Einstellungen festgelegt - der Gewinn geschlossen
Abbildung 3
---------------------------------------------
bei Erreichen eines Gewinns von 200 auf dem Paar - wird die Position geschlossen
Abbildung 4
200 erreicht und alle Positionen auf Kauf oder Verkauf geschlossen - weil man in beide Richtungen öffnen kann und jede Seite ihren eigenen Gewinn oder Verlust hat
- Wenn sie nun die horizontale Linie erreicht, wird eine Position geöffnet - aber Sie können sie manuell verschieben.
viel mehr Action. Es ist nur notwendig, um einen Betrag in den Einstellungen zu holen, 4 Ebenen - der letzte Betrag, mehr als 2000 wird viel 0,08 öffnen
im Bild aus diesen Zeilen, offene Position, und kann auch in den Einstellungen Schleppnetz diese Zeilen eingestellt werden
anstelle von 0 set distance= 0;// Obj: Trailing Stop (Abstand vom Preis zum Objekt, in Pips)
----------------------------ВАЖНО!
Der Trailing-Stop sollte so gesetzt werden, dass bei Auslösung des Signals die Linie weiter vom Balken wegspringt, sonst wird das Signal wiederholt ausgelöst.
So sieht die Situation aus, wenn eine horizontale Linie verfolgt wird und bei Auslösung des Befehls zur gleichen Leiste zurückgesprungen wird
----------------------------------
Damit die horizontale Linie nicht wiederholt wird, setzen Sie 0 = 20;// Obj: Schritt des Rasters, Punkte("0" -> false)
auf Null, wird es den Befehl ausführen und gelöscht
Ich habe diese Funktion heute mit einer horizontalen Linie für einen Verlust getestet (als der Preis in eine falsche Richtung ging, trifft eine horizontale Linie auf seinem Weg, von ihm öffnet eine Position und die Linie springt weiter weg, um eine bestimmte Entfernung, der Verlust erhöht sich und das nächste Mal, wenn es die horizontale Linie trifft, wird das Los mit einer Erhöhung geöffnet).
Ich bin fassungslos. - Diese Logik zieht alles auf die positive Seite. Ich frage mich, für wie viel man ein solches Wunderwerk verkaufen kann!
----------------------------------------- hier ist ein weiteres Beispiel - der Preis geht gegen mich. dies ist das erste Bild, ich werde das zweite zeigen, wie es funktioniert.
Es gibt Schaltflächen im Dienstprogramm (KAUFEN und VERKAUFEN), die alle Befehle ausführen, die die horizontalen Linien ausführen - Sie können einfach im Tester nachsehen, wie es funktioniert.
Hier sind Befehle, die ausgeführt werden können --------------------------------
//+------------------------------------------------------------------+//| ENUM_TRADE_COMMAND |//+------------------------------------------------------------------+enum ENUM_TRADE_COMMAND
{
Turn_Off=0, // TURN OFF
Line1_Line1=1, // Line: LOWER
Line2_Line2=2, // Line: TOP
Line_Line=3, // Line: LOWER+Line: TOP
Line1_buys=4, // Line: LOWER+Buy's
Line2_sells=5, // Line: TOP+Sell's
sells_Line1=6, // Line: LOWER+Sell's
buys_Line2=7, // Line: TOP+Buy's
close_buys=8, // Close All Buy's
close_sells=9, // Close All Sell's
close_all=10, // Close All Buy's and Sell's
open_buy=11, // Open Buy
open_sell=12, // Open Sell
close_open_b=13, // Close Sell+Open Buy
close_open_s=14, // Close Buy+Open Sell
open_buy_sell=15, // Open Buy and Sell
};
//+------------------------------------------------------------------+
Gewinnfunktion
------------ Profit ist nicht üblich - KAUFEN hat seinen eigenen Gewinn VERKAUFEN hat seinen eigenen Gewinn (zum Beispiel haben Sie zwei Positionen offen eine inkaufen und eine andere inverkaufen in den Einstellungen, die Sie 100 verdienen wollen, so dass, während jeder von ihnen wird nicht eine 100.) Auch jedes Paar hat einen anderen Gewinn, jeder muss eine 100 (wenn Sie mit mehreren Paaren arbeiten - für jedes Paar, müssen Sie separat das Dienstprogramm)
inputdouble TargetTakeProfit = 1000000; // Прибыль на паре в валюте
Важно!!! правильно настроить , открытии лота (До убытка валюте)
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Es wurde eine weitere Funktion hinzugefügt. Sie müssen es nur in Echtzeit im Terminal überprüfen.
diese Version ist so - Im Tester spielen
Keine schlechte Funktion, das kann ich Ihnen sagen. Sie geht hierhin und dorthin, nimmt ihre Gewinne mit und kümmert sich einen Dreck darum.
Aber der Code muss noch optimiert werden, er funktioniert gut.
Ich habe es auf einem echten Konto ausprobiert, ich wollte einen kleinen Gewinn aus zwei offenen Positionen erzielen. 160 hatte ich in den Einstellungen eingegeben, ich dachte, es würde die größte Minusposition schließen, aber nein, es schloss
Ich habe versucht, die Position zu schließen, die 160 Gewinn gemacht hat, und habe beide Positionen geschlossen. Es stellt sich heraus, dass ich von der ersten offenen Position aus rechnen muss, indem ich das Minus eins hinzufüge.
#Eigenschaft Version "1.017"
Ich habe erst am fünften Tag herausgefunden, wie ich diese Funktion richtig nutzen kann. Jetzt schließt es auf den Gesamtgewinn auf ein Paar aller Buy oder Sell
Keine schlechte Funktion, sage ich Ihnen. Hier und da nimmt sie ihre Gewinne mit und schert sich einen Dreck darum.
Ich muss den Code ändern, damit es funktioniert - es scheint alles gut zu funktionieren
Ich kann keinen Code für diese Funktion erstellen, der in einem Terminal funktioniert. Ich möchte es an 4 Terminals ausprobieren, ich weiß nicht, was dabei herauskommen wird.
Ich kann keinen Code erstellen, damit diese Funktion in einem Terminal funktioniert. Ich möchte es an 4 Terminals ausprobieren, ich weiß nicht, was dabei herauskommen wird
All diese 4 Terminals - haben kein Ergebnis gebracht. Und im Allgemeinen, diese Funktion von Loss - ich kann den Code nicht schreiben.
Aber ich habe vor langer Zeit eine solche Logik der Arbeit geschaffen, nur mit horizontalen Linien. Es bleibt zu überlegen, was das Los vervielfachen würde
Wir setzen eine horizontale Linie am oberen Rand
eine horizontale Linie am unteren Rand setzen
sobald der Preis diese Linien berührt, wird die Position eröffnet und die horizontalen Linien werden gesetzt
Diese -
und von diesen horizontalen Linien wird eine Position eröffnet und die ersten horizontalen Linien gesetzt - und so wird es wiederholt, bis der Preis in der Lage ist, sie zu erreichen
Abbildung 2
Hier wird - in den Einstellungen festgelegt - der Gewinn geschlossen
---------------------------------------------
bei Erreichen eines Gewinns von 200 auf dem Paar - wird die Position geschlossen
200 erreicht und alle Positionen auf Kauf oder Verkauf geschlossen - weil man in beide Richtungen öffnen kann und jede Seite ihren eigenen Gewinn oder Verlust hat
- Wenn sie nun die horizontale Linie erreicht, wird eine Position geöffnet - aber Sie können sie manuell verschieben.
Die Funktion erhöht das Los, von einem Verlust.
dank dieses Manneshttps://www.mql5.com/ru/forum/107406#comment_3018721
Igor Kim
#Eigenschaft Version "1.018"
zusätzliche Möglichkeit, die Losgröße des Währungsverlustes zu erhöhen
--------------------------------
viel mehr Action. Es ist nur notwendig, um einen Betrag in den Einstellungen zu holen, 4 Ebenen - der letzte Betrag, mehr als 2000 wird viel 0,08 öffnen
im Bild aus diesen Zeilen, offene Position, und kann auch in den Einstellungen Schleppnetz diese Zeilen eingestellt werden
anstelle von 0 set distance= 0;// Obj: Trailing Stop (Abstand vom Preis zum Objekt, in Pips)
----------------------------ВАЖНО!
Der Trailing-Stop sollte so gesetzt werden, dass bei Auslösung des Signals die Linie weiter vom Balken wegspringt, sonst wird das Signal wiederholt ausgelöst.
So sieht die Situation aus, wenn eine horizontale Linie verfolgt wird und bei Auslösung des Befehls zur gleichen Leiste zurückgesprungen wird
----------------------------------
Damit die horizontale Linie nicht wiederholt wird, setzen Sie 0 = 20;// Obj: Schritt des Rasters, Punkte("0" -> false)
auf Null, wird es den Befehl ausführen und gelöscht
Die Funktion erhöht das Los, von einem Verlust.
dank dieses Manneshttps://www.mql5.com/ru/forum/107406#comment_3018721
Igor Kim
Ich habe diese Funktion heute mit einer horizontalen Linie für einen Verlust getestet (als der Preis in eine falsche Richtung ging, trifft eine horizontale Linie auf seinem Weg, von ihm öffnet eine Position und die Linie springt weiter weg, um eine bestimmte Entfernung, der Verlust erhöht sich und das nächste Mal, wenn es die horizontale Linie trifft, wird das Los mit einer Erhöhung geöffnet).
Ich bin fassungslos. - Diese Logik zieht alles auf die positive Seite. Ich frage mich, für wie viel man ein solches Wunderwerk verkaufen kann!
----------------------------------------- hier ist ein weiteres Beispiel - der Preis geht gegen mich. dies ist das erste Bild, ich werde das zweite zeigen, wie es funktioniert.
Um zu verstehen, wie das Ganze funktioniert
Es gibt Schaltflächen im Dienstprogramm (KAUFEN und VERKAUFEN), die alle Befehle ausführen, die die horizontalen Linien ausführen - Sie können einfach im Tester nachsehen, wie es funktioniert.
Konfigurieren der Schaltflächen ----------------
Horizontale Linien einrichten --------------------
Hier sind Befehle, die ausgeführt werden können --------------------------------
Gewinnfunktion
------------ Profit ist nicht üblich - KAUFEN hat seinen eigenen Gewinn VERKAUFEN hat seinen eigenen Gewinn (zum Beispiel haben Sie zwei Positionen offen eine inkaufen und eine andere inverkaufen in den Einstellungen, die Sie 100 verdienen wollen, so dass, während jeder von ihnen wird nicht eine 100.) Auch jedes Paar hat einen anderen Gewinn, jeder muss eine 100 (wenn Sie mit mehreren Paaren arbeiten - für jedes Paar, müssen Sie separat das Dienstprogramm)
Важно!!! правильно настроить , открытии лота (До убытка валюте)Es gibt zwei Verluste für das Paar - den Gesamtverlust und (Kauf und Verkauf, jeder von ihnen hat seinen eigenen Verlust)
Hier wird die Berechnung im Verlust vonbuy your loss fromsell your durchgeführt.
Leichte Korrektur - damit die horizontale Linie schneller auf das Signal reagiert.
Es gab eine Situation, in der der Preis die horizontale Linie berührte und überquerte, aber nicht auslöste.
#Eigenschaft Version "1.019"
Ausprobieren einer neuen Funktion . Der Kalender gibt ein Signal, ein Befehl kann aus dem Signal ausgewählt werden
Ich muss noch darüber nachdenken, welche anderen Befehle für den Kalender benötigt werden.
Die habe ich schon.
Bild das Dienstprogramm einstellen, dies ist Bild 1. das zweite wird mit dem ausgeführten Befehl sein (Horizontale Linien in einem bestimmten Abstand)