Costumo implementar este tipo de funcionalidade:
//+----------------------------------------------------------------------------+ //| Управление позициями | //+----------------------------------------------------------------------------+ void ManagePositions() { double sl=0, tp=0; int ms[2]; ArrayInitialize(ms, 0); GetTradeSignal(ms); if (ExistPositions("", -1, Magic)) { if (ms[1]>0) ClosePositions("", OP_BUY , Magic); if (ms[1]<0) ClosePositions("", OP_SELL, Magic); } else { if (ms[0]>0) { if (StopLoss>0) sl=Ask-StopLoss*Point; else sl=0; if (TakeProfit>0) tp=Ask+TakeProfit*Point; else tp=0; OpenPosition(OP_BUY, sl, tp, Magic); } if (ms[0]<0) { if (StopLoss>0) sl=Bid+StopLoss*Point; else sl=0; if (TakeProfit>0) tp=Bid-TakeProfit*Point; else tp=0; OpenPosition(OP_SELL, sl, tp, Magic); } } }Como você pode ver, são escritas funções que executam ações bastante específicas. E então estas funções são combinadas de modo a implementar as táticas desejadas para trabalhar com posições.
Provavelmente algo com Stochast_1, Stochast_0, tudo o resto está bem
Não..... Os estocásticos estão bem. (trabalho sobre preços de abertura)
double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
Eu o entendi corretamente? A posição de compra deve fechar
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
E a posição de Venda deve ser fechada:
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); ?Eu o entendi corretamente?
Em geral, você acertou.
Ainda não querem fechar posições por estocástico! Eu fiz bem! Eu inseri um interruptor nos parâmetros externos. No final do código - bloco separado para posições de fechamento! Eu providenciei um triângulo verde para fechamento.
A tática é simples: cruzar as fronteiras do canal formado por MAs lentos com desvios para cima e para baixo. O código é muito simples. O Expert Advisor é baixado abaixo.
хотел выложить весь код - не принимет сервер! - пишет больше допустимого//********* Закрытие позиций **************************************** if (AutoClose) { //----переменные для закрытия позиций ---- double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1); //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum) { //----------------------------------------------------- if (OrderType() == OP_BUY) { if(Stochast_1>75 && Stochast_0<75) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { if(Stochast_1<25 && Stochast_0>25) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total } //Close_
Alguém pode dar uma olhada nisso? E diga-me o que está errado....
Talvez quando se abre um pedido, as licitações e os askchi não estejam bem definidos... Sempre me confundi com isto:
ticket=OrderSend(Symbol(),... ....Mas uma coisa é certa: em vez de "if(Stochast_1>75 && Stochast_0<75)" eu faria "if(Stochast_1>75 && Stochast_0<=75)".
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa noite! Surgiu um problema.
Preciso fechar uma posição. Pelo sinal do indicador. Além disso, preciso ser capaz de fechar a posição por Stop Loss ou Take Profit. (Só no caso de o sinal indicador ser muito tarde. - Isto acontece com freqüência):
Posteriormente, a fim de fechar as posições em aberto, estipulo:
No entanto, as posições ainda estão fechadas somente em caso de perda de posição ou lucro. (com uma exceção muito rara - única!)
Embora o indicador no gráfico mostre - que quase todas as posições abertas devem ser fechadas apenas pelo sinal do indicador. Por favor, me diga - onde pode haver um erro ... ?