borilunad: Sie können Folgendes tun: Km=MathMax(i/r,Point); // mit Division, und es wird nicht Null sein!
wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach der extrem mühsamen vierstündigen Arbeit habe ich endlich herausgefunden, wie man diese Funktion so einkleben kann, dass der Tester nicht flucht) kam etwa folgendes heraus.
double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Mindestpreis
double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Höchstpreis
double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a); //Rückgabe des Barpreiswertes mit dem niedrigsten Preis
double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b); //liefert den Preis des Balkens mit dem höchsten Preis
double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //gibt den Schlusskurs des letzten Balkens zurück
Es istschade, dass es keine Schaltfläche "Danke" gibt.
Aber es gibt noch eine weitere magische Schaltfläche: SRC. Wenn Sie sie verwenden, wird der Code (oder seine Fragmente) im Beitrag des Fragestellers übersichtlicher und lesbarer, was dem Karma des Fragestellers ein Plus verleiht und die Zahl derer erhöht, die sich diesen Code ansehen und sich entschließen zu helfen.
Einfach pst. . So in das geheime Wissen der Magie der SRC-Taste gewidmet sind, in der Regel nur diejenigen, die die heiligen Texte der Handbücher auf der Website zu lesen. Zum Beispiel, wie diese.
Und viel Erfolg bei der Beherrschung des Geheimwissens zur Lösung weiterer Fragen!
wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach extrem mühsamer vierstündiger Arbeit habe ich endlich herausgefunden, wie ich diese Funktion so einkleben kann, dass der Tester nicht flucht) kam ungefähr folgendes heraus.
void ChagingLots(int Magic,double percent,double lot)
{
double t=2, //коэффициент при делении,для того чтобы узнать цену закрытия
PriceCl, //цена закрытия части ордера
takeprofit; //нужна для вычисленийint count = 0,order;
for(int i=OrdersTotal()-1;i>=0;i--) //пробегаемся по массиву ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if(OrderType()== OP_BUY) //если ордер на покупку
{
takeprofit = OrderTakeProfit(); //вычисляем тейк ордера
PriceCl = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits); //примерную цену закрытия
order = OrderTicket(); //получили ордерif(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
{OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);}
}
if( OrderType()== OP_SELL )// для продажи аналогично
{
takeprofit = OrderTakeProfit();
PriceCl = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
order = OrderTicket();
if(Bid<PriceCl)
{OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
}
}
}
}
}
Hallo zusammen)
Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.
Hier ist ein Expert Advisor, in dem diese Funktion funktionieren sollte)
Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.
Ich habe einen EA, in dem diese Funktion funktionieren sollte).
Haben Sie im Dock nachgesehen, was dieser Fehler bedeutet! Dort werden Sie die Antwort finden!
Zu welchem Preis wird der Kauf abgeschlossen? Und der Verkauf?
Ist es möglich, die Größe des verfügbaren Verlaufs irgendwie anzupassen? Vielleicht ist jemand mit einem solchen Problem konfrontiert und hat bereits eine Lösung gefunden? Vielen Dank im Voraus!
Ich versuche, ein einfaches Schleppnetz EA von Kim zu aktualisieren, um ausstehende Aufträge nach dem Schließen aller Marktaufträge zu löschen, es schlägt fehl(
Ich habe eine Funktion zum Löschen ausstehender Aufträge hinzugefügt:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Удаление ордеров |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
bool fd;
int err, i, it, k=OrdersTotal(), ot;
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
fd=OrderDelete(OrderTicket(), clDelete);
if (fd) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
err=GetLastError();
if (UseSound) PlaySound(SoundError);
Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
Sleep(1000*5);
}
}
}
}
}
}
}
}
Ich stand vor einem weiteren Problem, das ich eigentlich nicht lösen kann, weil ich nicht allzu gut im Programmieren bin.
Ich schätze, ich sollte eine Bedingung wie die folgende schreiben:
Sie können Folgendes tun: Km=MathMax(i/r,Point); // mit Division, und es wird nicht Null sein!
wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach der extrem mühsamen vierstündigen Arbeit habe ich endlich herausgefunden, wie man diese Funktion so einkleben kann, dass der Tester nicht flucht) kam etwa folgendes heraus.
double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Mindestpreis
double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0); //Rückgabe des Bar-Index für n-Perioden mit Höchstpreis
double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a); //Rückgabe des Barpreiswertes mit dem niedrigsten Preis
double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b); //liefert den Preis des Balkens mit dem höchsten Preis
double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //gibt den Schlusskurs des letzten Balkens zurück
double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));
Drucken(xm1);
und machte auch die Formel glatter;)
Ich danke Ihnen!
sponger:
Es istschade, dass es keine Schaltfläche "Danke" gibt.
Aber es gibt noch eine weitere magische Schaltfläche: SRC. Wenn Sie sie verwenden, wird der Code (oder seine Fragmente) im Beitrag des Fragestellers übersichtlicher und lesbarer, was dem Karma des Fragestellers ein Plus verleiht und die Zahl derer erhöht, die sich diesen Code ansehen und sich entschließen zu helfen.
Einfach pst. . So in das geheime Wissen der Magie der SRC-Taste gewidmet sind, in der Regel nur diejenigen, die die heiligen Texte der Handbücher auf der Website zu lesen. Zum Beispiel, wie diese.
Und viel Erfolg bei der Beherrschung des Geheimwissens zur Lösung weiterer Fragen!wow!!! Kopf! Ich danke Ihnen vielmals!!! Nach extrem mühsamer vierstündiger Arbeit habe ich endlich herausgefunden, wie ich diese Funktion so einkleben kann, dass der Tester nicht flucht) kam ungefähr folgendes heraus.
double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point));
Drucken(xm1);
und machte auch die Formel glatter;)
Danke!
Hallo zusammen)
Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.
Hier ist ein Expert Advisor, in dem diese Funktion funktionieren sollte)
Hallo zusammen)
Ich habe versucht, eine Funktion zu schreiben, um einen Teil der Position zu schließen, aber wenn ich den Tester ausführe, erscheint 138 ein Fehler, ich verstehe nicht, was das Problem ist, bitte helfen Sie mir.
Ich habe einen EA, in dem diese Funktion funktionieren sollte).
Haben Sie im Dock nachgesehen, was dieser Fehler bedeutet! Dort werden Sie die Antwort finden!
Zu welchem Preis wird der Kauf abgeschlossen? Und der Verkauf?
Grüße an alle
Meine Frage bezieht sich eher auf die Entwickler von methaquotes, aber trotzdem...
Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?
Code:
Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));
Print(iClose(Symbol(),0,1200));
Bei der Prüfung dieser Verschiebung gibt das Terminal in 2 Fällen 0,0 aus
Aber
Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));
Print(iClose(Symbol(),0,120));
Im Test funktioniert alles
Ist es möglich, die Größe des verfügbaren Verlaufs irgendwie anzupassen? Vielleicht ist jemand mit einem solchen Problem konfrontiert und hat bereits eine Lösung gefunden?
Vielen Dank im Voraus!
Hallo zusammen.
Ich versuche, ein einfaches Schleppnetz EA von Kim zu aktualisieren, um ausstehende Aufträge nach dem Schließen aller Marktaufträge zu löschen, es schlägt fehl(
Ich habe eine Funktion zum Löschen ausstehender Aufträge hinzugefügt:
Ich stand vor einem weiteren Problem, das ich eigentlich nicht lösen kann, weil ich nicht allzu gut im Programmieren bin.
Ich schätze, ich sollte eine Bedingung wie die folgende schreiben:
Dies ist nur ein Beispiel für einen anderen EA.
Bitte helfen Sie mir weiter.