[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 554

 
drknn >>:

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

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

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

Grazie. Non è proprio quello di cui ho bisogno, o meglio non lo è affatto... Ho bisogno di fare una contro chiusura di una perdita con una o più redditizie per ottenere l'equità da un drawdown.
 

Beh, è ancora un loop.

Dichiarare una variabile di tipo double.

Passiamo tutti gli ordini. Se il profitto dell'ordine è più piccolo di quello in doppio, memorizzeremo questo profitto in esso. Così, dopo il ciclo, questa variabile conterrà il valore del profitto più piccolo (cioè la più grande delle perdite esistenti). Se salviamo negli array sia il ticket dell'ordine corrente perdente e degli ordini che hanno più di zero profitto, sia il profitto totale degli ordini che ne hanno uno positivo, possiamo decidere tutto (quali ordini usare e quanto coprire) in una sola funzione.

 
drknn >>:

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

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

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

Sens!!! Questa sì che è una cosa! Vado a curiosare in giro... :)
 

Ecco un'altra domanda...
Amici! Per favore, ditemi, come è possibile non comprare all'inizio del movimento verso l'alto e non vendere al fondo? Il segnale di comprare esiste ancora, ma è vicino all'inversione, ed esso (l'Expert Advisor) wham... e compra. La posizione risulta essere in perdita. Come filtrarlo?

Ho provato tutti i tipi di indulgenze diverse - tutte non uguali...

Forse qualcuno ha già affrontato questo problema, o meglio un problema? Come può essere risolto, anche una mezza parola, per favore ...
Profitti senza fine a tutti!

 
artmedia70 >>:

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

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

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


Come opzione - mestieri alternativi. Per esempio, facciamo trading sulla base di - direzione del movimento + posizione del prezzo (vi dico subito che il sistema è in perdita, ma illustra bene l'approccio). Per esempio. Scrivere nel codice: SignalBuy=false; SignalSell=false; - segnali nulli. Poi controlliamo: un segnale di acquisto si muove verso l'alto e il prezzo è superiore alla media mobile. Quindi SignalBuy=true; se il movimento verso il basso e il prezzo è inferiore al movimento, allora SignalSell=true; dovremmo anche scrivere una condizione: se non ci sono ordini nel mercato e la posizione Buy è vera e l'ultimo ordine nella storia è Buy, allora SignalBuy=false; - cioè lasciamo cadere il segnale Buy poiché l'ordine lungo è stato appena chiuso. Lo stesso vale per le posizioni corte. Cosa stiamo cercando di ottenere? Se lo slittamento è invertito e il prezzo sfonda, verrà aperto un ordine appropriato. Poi l'Expert Advisor aspetterà il segnale opposto. Questo significa che se la posizione lunga è chiusa quasi all'apice del trend, allora a questo punto, il lungo non si aprirà, perché l'EA sarà in uno stato di attesa del segnale per aprire lo short.

Penso che il principio sia chiaro.

 
drknn >>:


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

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

Sì, certo, grazie, il principio è chiaro, ma nel mio TS sarebbe ancora meno redditizio... Faccio trading in quasi tutti i TF contemporaneamente (da M5 a D1), e in ogni TF diversi dei miei TS lavorano simultaneamente... Così, su M5 raccolgo tutto quello che posso durante il movimento dei prezzi... Ecco il problema... Il segnale di acquisto dura fino all'inversione. Lo stesso per Vendere. Certo, può raccogliere abbastanza profitto sul movimento, ma queste posizioni perdenti aperte sui picchi e le depressioni dei prezzi o mangiano tutti i profitti del movimento o... (se non li chiudi, ma tieni duro) ... mangiano tutto il margine. Quindi come si fa a tagliarli con qualcosa... ...per tagliare quei picchi e quei fondi in modo che non abbiano un segnale...
 
artmedia70 >>:
Да, конечно, спасибо, принцип понятен, но в моей ТС он будет ещё более убыточен. У меня торговля идёт сразу почти по всем ТФ (от М5 до D1) и на кждом ТФ несколько своих ТС одновременно пашут... Так вот на М5 у меня собирает по ходу движения цены всё, что можно... Вот здесь и загвоздочка... Сигнал на Бай длится до самого разворота. Также и на Селл. По движению он собирает конечно достаточно, но эти убыточные позиции, открытые на пиках-донышках либо съедают всю прибыль от движения, либо... (если их не закрывать, а пересиживать) ... жрут всю маржу. Вот как бы их подрезать чем-нить... эти пики-дондышки, чтоб сигнала уже не было...


>> Ogni TF ha il proprio sistema di trading.

Significa che se vogliamo che i consulenti con diversi sistemi di trading non interferiscano con il lavoro degli altri, allora usiamo un magik - per ogni TS tale che sia diverso dal magik degli altri TS. Questo permetterà all'EA di vedere solo i propri ordini. Poi passiamo attraverso gli ordini e se l'ordine con il numero magico specificato è già presente sul mercato (per esempio, comprare), allora annulliamo il segnale per andare lungo. Oppure, se l'ultimo ordine lungo è l'ultimo nella storia, allora lo annulliamo anche noi e aspettiamo lo short.

Altrimenti, se vogliamo che il nostro EA interferisca con altri sistemi di trading della stessa coppia di valute, non considereremo il numero Magic nel ciclo dell'ordine. L'ulteriore logica della semplificazione delle posizioni è la stessa. Ma c'è un punto sottile qui. Se 1 EA interferisce con un altro EA, dobbiamo preparare un altro EA per una situazione in cui noterà improvvisamente che il suo ordine è scomparso - l'EA dovrebbe essere in grado di reagire correttamente a questo - non aprire immediatamente un nuovo ordine sconsiderato, ma analizzare, per esempio, la stessa storia di trading.

 

Lei dice che il suo segnale si estende fino all'inversione a U. Ma c'è un modo per aggirare anche questo. Non ci sono ordini sul mercato - controlliamo se c'è un segnale. Il segnale appare - apriamo una posizione, rimuoviamo il flag del segnale(azzeriamo la variabile) e non controlliamo ulteriormente la presenza di un segnale (ad esempio long) finché non appare il segnale opposto (short). In questo modo, il flag sulla presenza di un segnale di un dato tipo durerà solo pochi secondi in assoluto - il flag è impostato, l'ordine viene piazzato, il flag viene rimosso - aspettiamo che si verifichi il segnale opposto. Il contrario è sorto, la bandiera del segnale opposto è impostata e noi impostiamo la bandiera, che dà il bene di tracciare i segnali che prima non ci era permesso di tracciare.

Avviare l'Expert Advisor (non la funzione start(), ma solo l'inizio del lavoro):

- Diamo il permesso di tracciare sia segnali lunghi che corti.

Abbiamo un segnale lungo:

- Permetteteci di seguire i segnali di short.

- Impostiamo l'ordine lungo, e se l'ordine è già stato impostato, allora

- Rimuovere la bandiera che ci permette di seguire i segnali lunghi.

Il segnale di cortocircuito è stato attivato

- Se abbiamo la possibilità di invertire gli ordini, allora chiudiamo la posizione lunga e impostiamo la posizione corta

- Stabilire una bandiera che ci permette di seguire i segnali lunghi e rimuovere la bandiera che ci permette di seguire i segnali corti.

In generale, le bandiere sono interruttori. Potremmo anche progettare interruttori al posto degli interruttori. In questo caso, l'Expert Advisor inizia a lavorare secondo i principi di un automa cibernetico che ha una memoria dello stato in cui si trova. Questo può essere ottenuto, per esempio, dichiarando una variabile intera e assegnandole dei numeri di stato. Per esempio, nel blocco di inizializzazione scriviamo

Sostojanie=0;

Ma già all'inizio, l'Expert Advisor sa che nello stato zero (if(Sostojanie==0){}), può eseguire solo le operazioni A, B e C. E a seconda di quale sarà il risultato di una o più di queste operazioni, l'EA sceglie in quale stato andare (Sostojanie=1;//o 2, o 3 e così via), o viceversa, se rimanere nello stato attuale.

In ogni stato, l'Expert Advisor sa cosa può e non può fare, e in quali condizioni deve passare ad un altro stato.

 

Si è detto prima che il broker può chiudere+riaprire un ordine esistente e alcuni dei suoi parametri cambieranno (commenti ecc.).

- Vorrei sapere quali parametri saranno ereditati al 100%? (orario di apertura, lotti, ...?)

 
chief2000 >>:

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

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

Nessuno è autorizzato a toccare il lotto e il magik, e ci sarà un'aggiunta del broker al commento sulla coda. Ma il tuo commento può sempre essere trovato cercando una sottostringa.
Motivazione: