[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 554
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
artmedia70, Проходим по всем ордерам и суммируем их профиты. Если результирующий профит больше нуля или больше некой, заранее заданной величины, то закрываем все позы.
Попробуйте код закрытия всех ордеров сделать самостоятельно.
Подсказка: Для цикла, в котором все ордера будут закрываться, нужно направление перебора ордеров делать обратным - точно так, как я это сделал в вышеприведённом коде. А именно - от последнего ордера к первому. Если поменять направление перебора, то в цикле будут закрыты не все ордера. Например, ордер, который стоит в списке первым, будет закрыт и в результате на его место встанет другой. А поскольку счётчик цикла увеличился на единицу, то другой ордер из этой строчки списа будет пропущен.
Bem, ainda é um loop.
Declare uma variável de tipo duplo.
Nós passamos todas as ordens. Se o lucro do pedido for menor do que o dobro, armazenaremos esse lucro nele. Assim, após o loop, esta variável conterá o valor do menor lucro (ou seja, a maior perda dos lucros disponíveis). Se economizarmos nas arrays tanto o ticket da ordem atual perdedora como aquelas ordens que têm mais de zero de lucro, e o lucro total das ordens que têm um positivo, podemos decidir tudo (que ordens usar e quanto cobrir) em uma função.
Ну всё равно цикл.
Объявляем переменную типа double.
Проходим по все ордерам. Если профит ордера меньше чем тот, что в double, то запоминанем в неё этот профит. Таким образом после цикла в этой переменой лежит значение самого маленького профита (читай самый большой убыток из имеющихся). Если параллельно запоминать в массиывы и тикет текущего убыточного ордера и те тикеты ордеров, у котороых профит больше нуля, и суммарный профит ордеров, у которых он положительный, то можно всё решение (какими ордерами и сколько перекрывать) принять в одной функции.
Aqui vai outra pergunta...
Amigos! Por favor, me diga, como é possível não comprar no topo do movimento ascendente e não vender no fundo do poço? O sinal para comprar ainda existe, mas está próximo da inversão, e ele (o Conselheiro Especialista)... e compra. A posição acaba por ser deficitária. Como filtrar esta coisa?
Eu já tentei muitas indulgências diferentes - não é a mesma coisa...
Talvez alguém já tenha se deparado com este problema, ou melhor, um problema? Como pode ser resolvido, mesmo uma meia palavra, por favor ...
Lucros sem fim para todos!
А вот ещё вопросик...
Други! Подскажите, плиз, каким образом возможно не покупать на самом верху движения вверх и не продавать на самом донышке. А то получается, что сигнал на покупку ещё присутствует, но уже близко к развороту, а он (советник) хрясь... и покупает. Позиция оказывается убыточной. Как бы фильтровать енто дело, а???
Перепробовал уже уйму всяческую различных индюков - всё не то...
Мож кто сталкивался ужо с данной проблемой, даже, скажем точнее - проблемищей? Как её возможно решить, хоть пол-словом обмолвитесь, пожалуйста...
Всем профитов нескончаемых!
Como opção - ofícios alternativos. Por exemplo, nós negociamos com base em - direção do movimento + localização do preço (vou lhe dizer imediatamente que o sistema é deficitário, mas ilustra bem a abordagem). Por exemplo. Escreva no código: SignalBuy=falso; SignalSell=falso; - sinais nulos. Então verificamos: um sinal para comprar está subindo e o preço é mais alto do que a média móvel. Portanto, SignalBuy=verdadeiro; se o movimento para baixo e o preço for inferior ao movimento, então SignalSell=verdadeiro; devemos também escrever uma condição: se não houver ordens no mercado e a posição Comprar for verdadeira e a última ordem na história for Comprar, então SignalBuy=falso; - ou seja, deixamos cair o sinal Comprar desde que a longa ordem acabou de ser fechada. O mesmo é válido para as posições curtas. O que estamos tentando alcançar? Se o deslize for revertido e o preço for quebrado, uma ordem apropriada será aberta. Então o Expert Advisor aguardará o sinal oposto. Isto significa que se a posição longa for fechada quase no topo da tendência, então neste ponto, a longa não abrirá, porque a EA estará em estado de espera para que o sinal abra a curta.
Acho que o princípio é claro.
Как вариант - чередовать сделки. Например, торгуем по признаку - направление скользящей + местонахождение цены (скажу сразу система убыточна, но хорошо иллюстрирует подход). Например. Пишем в коде: SignalBuy=false; SignalSell=false; - обнулили сигналы. Далее проводим проверку: сигнал к покупке - скользящая вверх и цена выше скользяшей. Следовательно SignalBuy=true; если скользящая вниз и цена ниже скользящей, то SignalSell=true; Дале пишем условие: если ордеров в рынке нет, и при этом сигнал к покупке имеет положение "истина" и при этом последний ордер в истории - Buy, то SignalBuy=false; - то есть, сбрасывем сигнал к покупке, так как только что лонговый ордер был закрыт. То же самое с шортовыми позициями. Чего мы этим добьёмся? При перевороте скользящей и пробитии ценой будет открыт соответствующий ордер. Далее советник будет ждать противоположного сигнала. Это значит, что если лонговая поза закрылась почти на самом верху тренда, то в этой точке лонг уже не откроется, так как советник встанет в состояние ожидания сигнала открыть шорт.
Думаю, принцип понятен.
Да, конечно, спасибо, принцип понятен, но в моей ТС он будет ещё более убыточен. У меня торговля идёт сразу почти по всем ТФ (от М5 до D1) и на кждом ТФ несколько своих ТС одновременно пашут... Так вот на М5 у меня собирает по ходу движения цены всё, что можно... Вот здесь и загвоздочка... Сигнал на Бай длится до самого разворота. Также и на Селл. По движению он собирает конечно достаточно, но эти убыточные позиции, открытые на пиках-донышках либо съедают всю прибыль от движения, либо... (если их не закрывать, а пересиживать) ... жрут всю маржу. Вот как бы их подрезать чем-нить... эти пики-дондышки, чтоб сигнала уже не было...
>> Cada TF tem seu próprio sistema comercial.
Isso significa que se quisermos que consultores com sistemas comerciais diferentes não interfiram no trabalho um do outro, então usamos um magik - para cada TS de tal forma que ele seja diferente do magik de outros TS. Isto permitirá que a EA veja apenas suas próprias ordens. Em seguida, analisamos as ordens e, se a ordem com o número mágico especificado já estiver presente no mercado (por exemplo, comprar), então anulamos o sinal para que se prolongue. Ou, se a última ordem longa é a última da história, então também a anulamos e esperamos pelo curto.
Caso contrário, se quisermos que nossa EA interfira com outros sistemas comerciais do mesmo par de moedas, não consideraremos o número mágico no loop de ordens. A lógica adicional de simplificar posições é a mesma. Mas há aqui um ponto sutil. Se 1 EA interferir em outra EA, precisamos preparar outra EA para uma situação em que ela perceberá de repente que sua ordem desapareceu - a EA deve ser capaz de reagir adequadamente a isso - não abrir imediatamente uma nova ordem sem pensar, mas analisar, por exemplo, o mesmo histórico comercial.
Você diz que seu sinal se estende até a volta por cima. Mas há uma maneira de contornar isso também. Não há ordens no mercado - verificamos a existência de um sinal. O sinal aparece - abrimos uma posição, retiramos a bandeira de sinal(zeramos a variável) e não verificamos mais por um sinal (por exemplo, longo) até que o sinal oposto apareça (curto). Desta forma, a bandeira sobre a presença de um sinal de um determinado tipo durará apenas alguns segundos - a bandeira é colocada, o pedido é feito, a bandeira é retirada - esperamos que o sinal oposto ocorra. Surgiu o oposto, a bandeira do sinal oposto é hasteada e nós hasteamos a bandeira, o que dá o bem de rastrear os sinais que antes não estávamos autorizados a rastrear.
Iniciar o Expert Advisor (não a função start(), mas apenas o início do trabalho):
- Damos permissão para rastrear tanto sinais longos como curtos.
Temos um longo sinal:
- Permitir-nos rastrear os sinais dos shorts.
- Estabelecemos a ordem longa, e se a ordem já foi estabelecida, então
- Remova a bandeira que nos permite rastrear os sinais longos.
O sinal curto foi acionado
- Se tivermos a opção de inverter ordens, então feche a ordem longa e defina a ordem curta
- Estabelecer uma bandeira que nos permita rastrear sinais longos e remover a bandeira que nos permita rastrear sinais curtos.
De modo geral, as bandeiras são interruptores. Poderíamos também projetar interruptores em vez de interruptores. Neste caso, o Consultor Especialista começa a trabalhar nos princípios de um autômato cibernético que tem uma memória do estado em que se encontra. Isto pode ser alcançado, por exemplo, declarando uma variável inteira e atribuindo a ela números de estado. Por exemplo, no bloco de inicialização nós escrevemos
Sostojanie=0;
Mas já no início, o consultor especializado sabe que no estado zero (if(Sostojanie==0){}), só é permitido realizar as operações A, B e C. E dependendo de qual será o resultado de uma ou mais destas operações, a EA seleciona para qual estado ir (Sostojanie=1;//ou 2, ou 3 e assim por diante), ou vice versa, se vai permanecer no estado atual.
Em cada estado, o Conselheiro Especialista sabe o que pode e o que não pode fazer, e sob que condições deve mudar para outro estado.
Foi mencionado anteriormente que o corretor pode fechar+reabrir uma ordem existente e alguns de seus parâmetros mudarão (comentários, etc.).
- Eu gostaria de saber quais parâmetros serão 100% herdados?(horário de abertura, lotes, ...?)
Ранее упоминалось что брокер может закрыть+переоткрыть существующий ордер и при этом некоторые его параметры изменятся (комментарии и т.д.).
- Хотелось бы узнать какие параметры на 100% будут унаследованы? (время открытия/закрытия, лоты, ...?)