[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 554

 
drknn >>:

artmedia70, Проходим по всем ордерам и суммируем их профиты. Если результирующий профит больше нуля или больше некой, заранее заданной величины, то закрываем все позы.

Попробуйте код закрытия всех ордеров сделать самостоятельно.

Подсказка: Для цикла, в котором все ордера будут закрываться, нужно направление перебора ордеров делать обратным - точно так, как я это сделал в вышеприведённом коде. А именно - от последнего ордера к первому. Если поменять направление перебора, то в цикле будут закрыты не все ордера. Например, ордер, который стоит в списке первым, будет закрыт и в результате на его место встанет другой. А поскольку счётчик цикла увеличился на единицу, то другой ордер из этой строчки списа будет пропущен.

Ich danke Ihnen. Das ist nicht ganz das, was ich brauche, oder eher überhaupt nicht... Ich muss einen Verlust durch einen oder mehrere Gewinne ausgleichen, um das Eigenkapital aus einem Drawdown herauszuholen.
 

Nun, es ist immer noch eine Schleife.

Deklarieren Sie eine Variable vom Typ double.

Wir geben alle Aufträge weiter. Wenn der Auftragsgewinn kleiner ist als der doppelte, wird dieser Gewinn darin gespeichert. Nach der Schleife enthält diese Variable also den Wert des kleinsten Gewinns (d. h. den größten Verlust unter den verfügbaren). Wenn wir in den Arrays sowohl das Ticket des aktuellen Verlustauftrags und der Aufträge, die mehr als Null Gewinn haben, als auch den Gesamtgewinn der Aufträge, die einen positiven Gewinn haben, speichern, können wir alles (welche Aufträge zu verwenden und wie viel zu decken) in einer Funktion entscheiden.

 
drknn >>:

Ну всё равно цикл.

Объявляем переменную типа double.

Проходим по все ордерам. Если профит ордера меньше чем тот, что в double, то запоминанем в неё этот профит. Таким образом после цикла в этой переменой лежит значение самого маленького профита (читай самый большой убыток из имеющихся). Если параллельно запоминать в массиывы и тикет текущего убыточного ордера и те тикеты ордеров, у котороых профит больше нуля, и суммарный профит ордеров, у которых он положительный, то можно всё решение (какими ордерами и сколько перекрывать) принять в одной функции.

Sens!!! Das ist ein Ding! Ich schaue mich mal um... :)
 

Eine andere Frage...
Freunde! Sagen Sie mir bitte, wie es möglich ist, nicht ganz oben in der Aufwärtsbewegung zu kaufen und nicht ganz unten zu verkaufen? Das Kaufsignal besteht immer noch, aber es ist nahe an der Umkehrung, und es (der Expert Advisor) wham... und kauft. Die Position erweist sich als verlustbringend. Wie kann man sie filtern?

Ich habe alle möglichen Arten von Ablenkungen ausprobiert - nicht alle sind gleich...

Vielleicht hat jemand schon einmal mit diesem Problem, oder besser gesagt mit einem Problem, zu tun gehabt? Wie kann es gelöst werden, bitte auch nur ein halbes Wort ...
Endlose Profite für alle!

 
artmedia70 >>:

А вот ещё вопросик...
Други! Подскажите, плиз, каким образом возможно не покупать на самом верху движения вверх и не продавать на самом донышке. А то получается, что сигнал на покупку ещё присутствует, но уже близко к развороту, а он (советник) хрясь... и покупает. Позиция оказывается убыточной. Как бы фильтровать енто дело, а???

Перепробовал уже уйму всяческую различных индюков - всё не то...

Мож кто сталкивался ужо с данной проблемой, даже, скажем точнее - проблемищей? Как её возможно решить, хоть пол-словом обмолвитесь, пожалуйста...
Всем профитов нескончаемых!


Als Option - alternativer Handel. Zum Beispiel handeln wir auf der Basis von - Bewegungsrichtung + Preislage (ich sage Ihnen gleich, dass das System verlustbringend ist, aber es illustriert den Ansatz gut). Zum Beispiel. Schreiben Sie den Code ein: SignalBuy=false; SignalSell=false; - Nullsignale. Dann prüfen wir: Ein Kaufsignal ist eine Aufwärtsbewegung und der Kurs liegt über dem gleitenden Durchschnitt. Daher SignalBuy=true; wenn die Bewegung nach unten und der Preis niedriger als die Bewegung ist, dann SignalSell=true; wir sollten auch eine Bedingung schreiben: wenn es keine Aufträge auf dem Markt gibt und die Buy-Position wahr ist und der letzte Auftrag in der Geschichte Buy ist, dann SignalBuy=false; - d.h. wir lassen das Buy-Signal fallen, da der lange Auftrag gerade geschlossen wurde. Das Gleiche gilt für die Short-Positionen. Was wollen wir erreichen? Wenn sich der Schein umkehrt und der Preis durchbricht, wird ein entsprechender Auftrag eröffnet. Dann wartet der Expert Advisor auf das entgegengesetzte Signal. Das bedeutet, dass, wenn die Long-Position fast an der Spitze des Trends geschlossen wird, die Long-Position zu diesem Zeitpunkt nicht eröffnet wird, weil der EA auf das Signal zur Eröffnung der Short-Position wartet.

Ich denke, das Prinzip ist klar.

 
drknn >>:


Как вариант - чередовать сделки. Например, торгуем по признаку - направление скользящей + местонахождение цены (скажу сразу система убыточна, но хорошо иллюстрирует подход). Например. Пишем в коде: SignalBuy=false; SignalSell=false; - обнулили сигналы. Далее проводим проверку: сигнал к покупке - скользящая вверх и цена выше скользяшей. Следовательно SignalBuy=true; если скользящая вниз и цена ниже скользящей, то SignalSell=true; Дале пишем условие: если ордеров в рынке нет, и при этом сигнал к покупке имеет положение "истина" и при этом последний ордер в истории - Buy, то SignalBuy=false; - то есть, сбрасывем сигнал к покупке, так как только что лонговый ордер был закрыт. То же самое с шортовыми позициями. Чего мы этим добьёмся? При перевороте скользящей и пробитии ценой будет открыт соответствующий ордер. Далее советник будет ждать противоположного сигнала. Это значит, что если лонговая поза закрылась почти на самом верху тренда, то в этой точке лонг уже не откроется, так как советник встанет в состояние ожидания сигнала открыть шорт.

Думаю, принцип понятен.

Ja, natürlich, danke, das Prinzip ist klar, aber in meinem TS wäre es noch unrentabler... Ich handle in fast allen TFs gleichzeitig (von M5 bis D1), und in jedem TF arbeiten mehrere meiner TS gleichzeitig... Also, auf der M5 sammle ich alles, was ich während der Preisbewegung finden kann... Hier ist das Problem... Das Kaufsignal hält bis zur Umkehr an. Dasselbe gilt für Sell. Natürlich kann er in der Bewegung genügend Gewinn erzielen, aber diese Verlustpositionen, die bei Preisspitzen und -tiefs eröffnet werden, fressen entweder den gesamten Gewinn der Bewegung auf oder... (wenn Sie sie nicht schließen, sondern festhalten) ... den gesamten Spielraum aufzehren. Wie schneidet man sie also mit etwas ab... ...um diese Spitzen und Tiefen abzuschneiden, damit sie kein Signal haben...
 
artmedia70 >>:
Да, конечно, спасибо, принцип понятен, но в моей ТС он будет ещё более убыточен. У меня торговля идёт сразу почти по всем ТФ (от М5 до D1) и на кждом ТФ несколько своих ТС одновременно пашут... Так вот на М5 у меня собирает по ходу движения цены всё, что можно... Вот здесь и загвоздочка... Сигнал на Бай длится до самого разворота. Также и на Селл. По движению он собирает конечно достаточно, но эти убыточные позиции, открытые на пиках-донышках либо съедают всю прибыль от движения, либо... (если их не закрывать, а пересиживать) ... жрут всю маржу. Вот как бы их подрезать чем-нить... эти пики-дондышки, чтоб сигнала уже не было...


>> Jeder TF hat sein eigenes Handelssystem.

Das heißt, wenn wir wollen, dass sich Berater mit unterschiedlichen Handelssystemen nicht gegenseitig in die Quere kommen, dann verwenden wir für jeden TS eine Magie, die sich von der Magie der anderen TS unterscheidet. Dadurch kann der EA nur seine eigenen Aufträge sehen. Dann gehen wir die Aufträge durch, und wenn der Auftrag mit der angegebenen magischen Zahl bereits auf dem Markt vorhanden ist (z. B. Kauf), dann annullieren wir das Signal, um zu kaufen. Oder, wenn der letzte Long-Auftrag der letzte in der Historie ist, dann löschen wir ihn auch und warten auf den Short-Auftrag.

Andernfalls, wenn wir wollen, dass unser EA mit anderen Handelssystemen desselben Währungspaares interferiert, werden wir die Magic-Nummer in der Auftragsschleife nicht berücksichtigen. Die weitere Logik der Vereinfachung von Positionen ist dieselbe. Aber es gibt hier einen feinen Unterschied. Wenn ein EA einen anderen EA stört, müssen wir einen anderen EA auf eine Situation vorbereiten, in der er plötzlich bemerkt, dass sein Auftrag verschwunden ist - der EA sollte in der Lage sein, richtig darauf zu reagieren - nicht sofort gedankenlos einen neuen Auftrag zu eröffnen, sondern z. B. denselben Handelsverlauf zu analysieren.

 

Sie sagen, Ihr Signal reiche bis zum U-Turn. Aber auch dafür gibt es einen Ausweg. Es gibt keine Aufträge auf dem Markt - wir prüfen, ob ein Signal vorliegt. Das Signal erscheint - wir eröffnen eine Position, entfernen die Signalflagge(setzen die Variable auf Null) und prüfen nicht weiter auf ein Signal (z.B. Long), bis das entgegengesetzte Signal erscheint (Short). Auf diese Weise wird das Kennzeichen für das Vorhandensein eines Signals eines bestimmten Typs nur wenige Sekunden lang bestehen bleiben - das Kennzeichen wird gesetzt, der Auftrag wird erteilt, das Kennzeichen wird entfernt - wir warten auf das entgegengesetzte Signal. Das Gegenteil ist eingetreten, die Flagge des entgegengesetzten Signals ist gesetzt und wir setzen die Flagge, was uns die Möglichkeit gibt, die Signale zu verfolgen, die wir vorher nicht verfolgen durften.

Starten Sie den Expert Advisor (nicht die Funktion start(), sondern nur den Beginn der Arbeit):

- Wir gestatten die Verfolgung sowohl von Long- als auch von Short-Signalen.

Wir haben ein langes Signal:

- Erlauben Sie uns, die Signale der Shorts zu verfolgen.

- Wir setzen den langen Auftrag, und wenn der Auftrag bereits gesetzt wurde, dann

- Entfernen Sie die Flagge, die es uns ermöglicht, die langen Signale zu verfolgen.

Das Kurzschluss-Signal ist ausgelöst worden

- Wenn wir die Möglichkeit haben, Aufträge umzukehren, dann schließen wir den Long-Auftrag und setzen den Short-Auftrag

- Setzen Sie eine Flagge, die es uns erlaubt, lange Signale zu verfolgen, und entfernen Sie die Flagge, die es uns erlaubt, kurze Signale zu verfolgen.

Im Allgemeinen sind die Flaggen Schalter. Wir könnten auch Schalter anstelle von Schaltern entwerfen. In diesem Fall beginnt der Expert Advisor nach den Prinzipien eines kybernetischen Automaten zu arbeiten, der ein Gedächtnis für den Zustand hat, in dem er sich befindet. Dies kann z. B. durch die Deklaration einer Integer-Variablen und die Zuweisung von Zustandszahlen erreicht werden. Im Initialisierungsblock schreiben wir zum Beispiel

Sostojanie=0;

Aber schon zu Beginn weiß der Expert Advisor, dass er im Zustand Null (if(Sostojanie==0){}) nur die Operationen A, B und C durchführen darf. Und je nachdem, was das Ergebnis einer oder mehrerer dieser Operationen sein wird, wählt der EA aus, in welchen Zustand er übergehen will (Sostojanie=1;/oder 2, oder 3 und so weiter), oder umgekehrt, ob er im aktuellen Zustand bleiben will.

In jedem Zustand weiß der Expert Advisor, was er tun kann und was nicht, und unter welchen Bedingungen er in einen anderen Zustand wechseln muss.

 

Es wurde bereits erwähnt, dass der Makler einen bestehenden Auftrag schließen und wieder öffnen kann, wobei sich einige seiner Parameter ändern (Kommentare usw.).

- Ich würde gerne wissen, welche Parameter zu 100% vererbt werden?(Öffnungszeit, Lose, ...?)

 
chief2000 >>:

Ранее упоминалось что брокер может закрыть+переоткрыть существующий ордер и при этом некоторые его параметры изменятся (комментарии и т.д.).

- Хотелось бы узнать какие параметры на 100% будут унаследованы? (время открытия/закрытия, лоты, ...?)

Niemand darf das Los und die Magie berühren, und es wird einen Maklerzusatz zu dem Kommentar auf dem Schwanz geben. Aber Ihr Kommentar kann immer gefunden werden, wenn Sie nach einem Teilstring suchen.