[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 554

 
drknn >>:

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

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

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

Gracias. Eso no es exactamente lo que necesito, o más bien no... Necesito hacer un contra cierre de una pérdida por una o más rentables para sacar la equidad de un drawdown.
 

Bueno, sigue siendo un bucle.

Declarar una variable de tipo double.

Pasamos todas las órdenes. Si el beneficio de la orden es menor que el del doble, almacenaremos este beneficio en él. Así, después del bucle, esta variable contendrá el valor del menor beneficio (es decir, la mayor de las pérdidas existentes). Si guardamos en las matrices tanto el ticket de la orden perdedora actual como el de las órdenes que tienen más de cero de beneficio, y el beneficio total de las órdenes que tienen uno positivo, podemos decidir todo (qué órdenes usar y cuánto cubrir) en una sola función.

 
drknn >>:

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

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

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

¡¡Sens!! ¡Eso sí que es una cosa! Voy a ir a husmear... :)
 

Aquí hay otra pregunta...
¡Amigos! Por favor, dígame, ¿cómo es posible no comprar en la parte superior del movimiento alcista y no vender en la parte inferior? La señal de compra sigue existiendo, pero está cerca de la reversión, y ella (el Asesor Experto) wham... y compra. La posición resulta ser deficitaria. ¿Cómo filtrar esta cosa?

He probado todo tipo de indulgencias diferentes - todas no son iguales...

¿Quizá alguien se ha enfrentado ya a este problema, o más bien a un problema? Cómo se puede resolver, incluso una media palabra, por favor ...
¡Ganancias infinitas para todos!

 
artmedia70 >>:

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

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

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


Como opción: intercambios alternativos. Por ejemplo, operamos sobre la base de - dirección del movimiento + ubicación del precio (le diré de inmediato que el sistema es deficitario, pero ilustra bien el enfoque). Por ejemplo. Escribe en el código: SignalBuy=false; SignalSell=false; - señales nulas. A continuación, comprobamos: una señal de compra se mueve hacia arriba y el precio es superior a la media móvil. Por lo tanto, SignalBuy=true; si el movimiento es a la baja y el precio es inferior al movimiento, entonces SignalSell=true; también deberíamos escribir una condición: si no hay órdenes en el mercado y la posición de compra es verdadera y la última orden en el historial es de compra, entonces SignalBuy=false; - es decir, dejamos caer la señal de compra ya que la orden larga acaba de cerrarse. Lo mismo ocurre con las posiciones cortas. ¿Qué queremos conseguir? Si el deslizamiento se invierte y el precio se rompe, se abrirá una orden apropiada. Entonces el Asesor Experto esperará la señal contraria. Esto significa que si la posición larga se cierra casi en la cima de la tendencia, entonces en este punto, el largo no se abrirá, porque el EA estará en un estado de espera de la señal para abrir el corto.

Creo que el principio está claro.

 
drknn >>:


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

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

Sí, claro, gracias, el principio está claro, pero en mi TS sería aún más improductivo... Opero en casi todos los TFs a la vez (desde M5 hasta D1), y en cada TF varios de mis TS están trabajando simultáneamente... Así, en M5 recojo todo lo que puedo durante el movimiento de precios... Este es el problema... La señal de compra dura hasta la reversión. Lo mismo para vender. Por supuesto, puede reunir suficiente beneficio en el movimiento, pero estas posiciones perdedoras abiertas en los picos y valles de los precios se comen todo el beneficio del movimiento o... (si no los cierras, pero te sientas bien) ... se comen todo el margen. Entonces, ¿cómo los cortas con algo... ...para cortar esos picos y fondos para que no tengan señal...
 
artmedia70 >>:
Да, конечно, спасибо, принцип понятен, но в моей ТС он будет ещё более убыточен. У меня торговля идёт сразу почти по всем ТФ (от М5 до D1) и на кждом ТФ несколько своих ТС одновременно пашут... Так вот на М5 у меня собирает по ходу движения цены всё, что можно... Вот здесь и загвоздочка... Сигнал на Бай длится до самого разворота. Также и на Селл. По движению он собирает конечно достаточно, но эти убыточные позиции, открытые на пиках-донышках либо съедают всю прибыль от движения, либо... (если их не закрывать, а пересиживать) ... жрут всю маржу. Вот как бы их подрезать чем-нить... эти пики-дондышки, чтоб сигнала уже не было...


>> Cada TF tiene su propio sistema de negociación.

Esto significa que si queremos que los asesores con diferentes sistemas de comercio no interfieran en el trabajo de los demás, entonces utilizamos un magik - para cada TS de tal manera que sea diferente del magik de otros TS. Esto permitirá al EA ver sólo sus propias órdenes. A continuación, repasamos las órdenes y si la orden con el número mágico especificado ya está presente en el mercado (por ejemplo, de compra), entonces anulamos la señal para ir en largo. O, si la última orden larga es la última del historial, entonces también la anulamos y esperamos la corta.

De lo contrario, si queremos que nuestro EA interfiera con otros sistemas de trading del mismo par de divisas, no consideraremos el número Magic en el bucle de la orden. La lógica adicional de la simplificación de posiciones es la misma. Pero hay un punto sutil aquí. Si 1 EA interfiere con otro EA, tenemos que preparar a otro EA para una situación en la que de repente se dará cuenta de que su orden ha desaparecido - el EA debe ser capaz de reaccionar adecuadamente a esto - no abrir inmediatamente una nueva orden sin pensar, sino analizar, por ejemplo, el mismo historial de operaciones.

 

Usted dice que su señal se extiende hasta el giro en U. Pero también hay una forma de evitarlo. No hay órdenes en el mercado - comprobamos si hay una señal. Aparece la señal - abrimos una posición, eliminamos la bandera de la señal(ponemos a cero la variable) y no comprobamos más la señal (por ejemplo, largo) hasta que aparece la señal contraria (corto). De esta manera, la bandera sobre la presencia de una señal de un tipo determinado durará sólo unos segundos en absoluto - la bandera se establece, la orden se coloca, la bandera se elimina - esperamos a que la señal opuesta se produzca. Se ha producido lo contrario, se ha puesto la bandera de la señal contraria y hemos puesto la bandera, lo que da el bien para rastrear las señales que antes no podíamos rastrear.

Inicie el Asesor Experto (no la función start(), sino el comienzo del trabajo):

- Damos permiso para rastrear tanto las señales largas como las cortas.

Tenemos una señal larga:

- Permitirnos seguir las señales de los cortos.

- Fijamos la orden larga, y si la orden ya ha sido fijada, entonces

- Quitar la bandera que nos permite seguir las señales largas.

La señal de cortocircuito se ha disparado

- Si tenemos la opción de invertir las órdenes, entonces cerramos la orden larga y ponemos la orden corta

- Establecer una bandera que nos permita seguir las señales largas y eliminar la bandera que nos permita seguir las señales cortas.

En general, las banderas son interruptores. También podríamos diseñar interruptores en lugar de conmutadores. En este caso, el Asesor Experto empieza a trabajar según los principios de un autómata cibernético que tiene memoria del estado en que se encuentra. Esto puede lograrse, por ejemplo, declarando una variable entera y asignándole números de estado. Por ejemplo, en el bloque de inicialización escribimos

Sostojanie=0;

Pero ya desde el principio, el Asesor Experto sabe que en el estado cero (if(Sostojanie==0){}), sólo puede realizar las operaciones A, B y C. Y dependiendo de cuál sea el resultado de una o varias de estas operaciones, el EA selecciona a qué estado pasar (Sostojanie=1;//o 2, o 3 y así sucesivamente), o viceversa, si permanecer en el estado actual.

En cada estado, el Asesor Experto sabe lo que puede y no puede hacer, y bajo qué condiciones debe cambiar a otro estado.

 

Se mencionó anteriormente que el corredor puede cerrar+reabrir una orden existente y algunos de sus parámetros cambiarán (comentarios, etc.).

- Me gustaría saber qué parámetros se heredan al 100%.(horario de apertura, lotes, ...)

 
chief2000 >>:

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

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

No se permite tocar el lote y el magik, y habrá una adenda del corredor al comentario de la cola. Pero tu comentario siempre se puede encontrar buscando una subcadena.
Razón de la queja: