Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 512

 
woin2110:

if ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//open Buy OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0);//open Buy Order.

se (comprar>0)
{
Alerta ("O pedido BuyStop foi estabelecido",comprar);
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//open Sell order.
se (vender>0)
{
Alerta ("SellStop order set ",vender);
}
se (DayOfWeek()==5 && Hour()==22) //apagar pedidos pendentes e abertos na sexta-feira, 23:00 horas, horário do servidor
{
se (OrderSelect(vender,SELECT_BY_TICKET)==verdadeiro)
{
EncomendarFechar(vender,EncomendarLotes(),Lance,3,Verde);//(Bilhete,lote,Preço de fechamento, deslizamento em pips,cor da seta de fechamento no gráfico){Fechar ordem de mercado para vender.
OrdemDelete(venda);//fechando o limite de venda.
}
se (OrderSelect(buy,SELECT_BY_TICKET)==verdadeiro)
{
EncomendarFechar(comprar,EncomendarLotes(),Perguntar,3,Vermelho);//(bilhete,lote,preço de fechamento,deslizamento em pontos,cor da seta de fechamento no gráfico)/fechar ordem de mercado para comprar.
OrderDelete(compra);//fechando o limite de compra.
retorno(0);
}
}
}

Quem pode me dizer por que ele não fecha os pedidos e não elimina os limites?


Fechar ordem de compra ao preço de compra, vender ao preço de venda.
 
isn-88:

Fechar ordem de compra ao preço de compra, vender ao preço de venda.
obrigado
 
AlexeyVik:
Condição simples na função init
Metais, estoques e matérias primas não contam.

Obrigado. Você pode me dizer a maneira mais fácil. Necessidade de entender se há ou não posições em aberto neste par. Se há ordens de venda e se há ordens de compra. Isso significa que precisamos de

0 - se não houver pedidos em aberto

1 - Tenho ordens de venda, mas não tenho ordens de compra.

2 - há ordens de compra, mas nenhuma ordem de venda

3 - Há os dois...

 
woin2110:

https://docs.mql4.com/ru/series

if(DayOfWeek()==1,2..... && Hora()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERÍODO_D1,0));//define low.

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define opening.


Obrigado!
 
Zolotai:

Obrigado. Você pode me dizer a maneira mais fácil. Necessidade de entender se há ou não posições em aberto neste par. Se há ordens de venda e se há ordens de compra. Isso significa que precisamos de

0 - se não houver pedidos em aberto

1 - Tenho ordens de venda, mas não tenho ordens de compra.

2 - há ordens de compra, mas nenhuma ordem de venda

3 - Há os dois.

Por exemplo, como este:

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

Por exemplo, assim:



Muito obrigado. Meu entendimento é que asc é o preço atual. Eu abro um pedido quando não há pedidos em aberto. O loop vai da primeira à última ordem aberta? Como posso transmitir para uma variável o lote do último pedido aberto e seu preço?
 
Zolotai:

Muito obrigado. Meu entendimento é que asc é o preço atual. Eu abro um pedido quando não há pedidos em aberto. O loop vai da primeira à última ordem aberta? Como posso definir o lote da última ordem em aberto e seu preço em uma variável?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

duplo z; //declarar uma variável "z".
duplo y; //declararregar a variável "y


if(OrderSelect(10,SELECT_BY_POS)==verdadeiro) //se o pedido (por bilhete) já estiver selecionado

{

OrderLots()=z //atribuir o lote para esta ordem para a variável "z".

OrderOpenPrice()=y //atribuir o preço aberto à variável "y".

}

tente isto

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

duplo z; //declararregar a variável "z
duplo y; //declararregar a variável "y


if(OrderSelect(10,SELECT_BY_POS)==verdadeiro) //se o pedido (por bilhete) já estiver selecionado

{

OrderLots()=z //atribuir o lote para esta ordem para a variável "z".

OrderOpenPrice()=y //atribuir o preço aberto à variável "y".

}

tente isto

y = OrderOpenPrice();


Oops, entendi, simplesmente não entendo. if((i_buy==0 && i_sell==0) |||| y > Step). Deve abrir outra ordem se a distância da última ordem aberta for superior a 5 pips. Mas isso não funciona, pergunta.

for(int i=0;i<total;i++) Vai da primeira ordem aberta até a última? Ou seja, eu deveria eventualmente obter o preço do último pedido aberto.

 
Zolotai:

y = OrderOpenPrice();


Não entendo se((i_buy==0 && i_sell==0) |||| y > Passo). Deve abrir outra ordem se a distância da última ordem aberta for superior a 5 pips. Mas isso não funciona, pergunta.

for(int i=0;i<total;i++) Vai da primeira ordem aberta até a última? Em outraspalavras, eu deveria obter o preço do último pedido aberto.


Não sei, ainda não me deparei com isso.
 

Olá. Eu vi um post em https://forum.mql4.com/ru/51490/page2 onde há um script que abre a janela de configurações da EA:

Esta traz à tona a janela de ajustes da EA:

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

É possível fazer o script abrir a janela de configurações da EA em intervalos de 1 segundo e confirmá-lo imediatamente (pressione o botão ok) e assim por diante?