[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 232

 

Dmido писал(а) >>

Bom dia)


Volto para você com uma pergunta. Evitei-a por muito tempo devido à minha falta de compreensão das ordens pendentes nos EAs, mas finalmente fiquei preso. Eu não entendo como estabelecer o preço em ordem pendente. O que devo acrescentar em vez de BID e ASK ? Posso usar qualquer variável calculada antes disso? Então, como devo estabelecer este preço para que passe mais tarde, ao fazer um pedido? Eu recebo muitos erros dizendo que não existe tal preço e assim por diante.....


Se não se importar, pode explicar sua resposta em código... Eu procurei tanto, mas diz de lado...(((

Na qualidade dos valores Ask e Bid on idea devem agir os valores atuais do Ask e Bid, ou variáveis calculadas anteriormente.

Há aqui uma peculiaridade: você pode tomar estes valores como verdadeiros apenas para pedidos de Compra e Venda.


O melhor é fazer a abertura de todos os pedidos sob a forma de pelo menos 6 procedimentos, ou seja OrderSendBuy, OrderSendSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendSendStopBuy e OrderSendStopSell.


PS

Deve-se observar que as ordens limitadas são abertas ao melhor preço (com um travessão do preço atual por um certo número de pontos), e as ordens de parada são colocadas na direção oposta acima ou abaixo do preço atual.


Exemplo de um código de abertura do mercado:

//Procedure OrderSendBuy
void OrderSendBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

if( SizeTP>0){ TP = RealAsk+ SizeTP* SymbolPoint;}else{ TP = RealAsk+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid- SizeSL* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUY, LotsSize, RealAsk, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка открыть Market-Buy позицию по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создана позиция Market-Buy по паре ", WorkSymbol," Тикер новой позиции #", TicketNow);
Alert("Open market-Buy, ticket ", TicketNew," Open price ", RealAsk," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}


 

Exemplo de código para definir uma ordem pendente:

//Procedure OrderSendLimitBuy
void OrderSendLimitBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int LimitStep=50,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double OpenPrice; //Цена на которую будет установлен отложник

double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

OpenPrice = RealAsk- LimitStep* SymbolPoint; //Цена на которую будет установлен отложник

if( SizeTP>0){ TP = OpenPrice+ SizeTP* SymbolPoint;}else{ TP = OpenPrice+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid-( SizeSL+ LimitStep)* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUYLIMIT, LotsSize, OpenPrice, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка создать Limit-Buy по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создан ордер Limit-Buy по паре ", WorkSymbol," Тикер ордера #", TicketNow);
Alert("Create Limit-Buy, ticket ", TicketNew," Open price ", OpenPrice," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}
 

Olá.

Estou testando um EA.

Período Dia (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modelo Todos os carrapatos (o método mais preciso baseado em todos os menores prazos disponíveis)
Bares na história 1259 Carrapatos modelados 8769661 Qualidade de modelagem n/d
Erros de descasamento de cartas 225

Estou recebendo erros de desajuste. Existe alguma maneira de evitá-los? Não entendo se este é um grande ou pequeno número de erros. A escala é predominantemente verde e verde escuro, mas apenas cerca de 20% cheia. E a qualidade da simulação é n/a - isso é um problema?

Talvez eu nem devesse prestar atenção, só não entendo ...

Obrigado de antemão.

 
RedFish >> :

Olá.

Estou testando um EA.

Período Dia (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modelo Todos os carrapatos (o método mais preciso baseado em todos os menores prazos disponíveis)
Bares na história 1259 Carrapatos modelados 8769661 Qualidade de modelagem n/d
Erros de descasamento de cartas 225

Estou recebendo erros de desajuste. Existe alguma maneira de evitá-los? Não entendo se este é um grande ou pequeno número de erros. A escala é predominantemente verde e verde escuro, mas apenas cerca de 20% cheia. E a qualidade da simulação é n/a - isso é um problema?

Talvez eu nem devesse prestar atenção, só não entendo ...

Obrigado de antemão.

Não sei se pessoalmente nunca me preocupo com tais coisas (pois quase sempre testei estratégias sem visualização).


Eis o que obtive sobre o Judeu D1 com um período de testes semelhante

Tentativa #1: barras na história - 1302 carrapatos simulados - 4313293 Qualidade da simulação - 50.00%

Tentativa #2: Barras na história - 1303 Carrapatos modelados - 4323442 Qualidade de modelagem - 50,00%
Erros de descasamento do gráfico - 0.

 
Interesting писал(а) >>

Não sei se pessoalmente nunca me preocupo com tais coisas (pois quase sempre testei estratégias sem visualização).

Eis o que obtive sobre o Judeu D1 com um período de testes semelhante

Tentativa #1: barras na história - 1302 carrapatos simulados - 4313293 Qualidade da simulação - 50.00%

Tenta #2: Barra na história - 1303 Tooled ticks - 4323442 Qualidade de modelagem - 50,00%
Erro de descasamento de gráfico - 0.

Obrigado.

Penso agora que a MT preenche automaticamente as últimas 512 barras e preenche o resto .... Não sei exatamente como dizer isso. Meu Expert Advisor é uma tendência e a distância é importante para mim. 512 barras não é muito.

Quanto aos outros símbolos, ele pode ser baixado de um site separado e baixado mais tarde?

Agradeço a vocês.

 

Boa tarde, caros amigos.

Tenho sido burro ultimamente, talvez seja do tempo.

Você pode me dizer como declarar uma matriz unidimensional (em um indicador), se o número de elementos da matriz for definido por uma variável externa.

Obrigado.

 
RedFish >> :

Olá.

Estou testando um EA.

PeríodoDia (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
ModeloTodos os carrapatos (o método mais preciso baseado em todos os menores prazos disponíveis)
Bares na história1259Carrapatos modelados8769661Qualidade de modelagemn/d
Erros de descasamento de cartas225

Estou recebendo erros de desajuste. Existe alguma maneira de evitá-los? Não entendo se este é um grande ou pequeno número de erros. A escala é predominantemente verde e verde escuro, mas apenas cerca de 20% cheia. E a qualidade da simulação é n/a - isso é um problema?

Talvez eu nem devesse prestar atenção, só não entendo ...

Obrigado de antemão.

Meu abaixo IMHO, mas sendo citações - por favor, me corrija se eu estiver errado:

A questão é que Fechar 59 minutos, Fechar 45 minutos na M15, Fechar 30 minutos na M30 e Fechar na H1 pode NÃO coincidir.

Para coincidir, você precisa matar seu próprio histórico, baixando o histórico do servidor de cotações por um período menor

e recalcular todos os prazos usando o histórico baixado.

Neste caso, o fechamento real em diferentes prazos também pode não coincidir.

Em outras palavras, você deve tomar o menor prazo e ler os valores do maior prazo com sua MÃO.

 
alderru >> :

Boa tarde, caros amigos.

Tenho sido burro ultimamente, talvez seja do tempo.

Você poderia me dizer como declarar uma matriz unidimensional (em um indicador), se o número de elementos da matriz for definido por uma variável externa.

Obrigado.

int y[];

exterior int blah-blah = 100;

init() {

ArrayResize(y, blá, blá, blá);

}

 
jartmailru писал(а) >>

Meus abaixo IMHO, mas sendo citações, por favor me corrijam se eu estiver errado:

O fato é que Fechar aos 59 minutos, Fechar aos 45 na M15, Fechar aos 30 na M30 e Fechar à H1 pode NÃO corresponder.

Para coincidir, você precisa matar seu próprio histórico, baixando o histórico do servidor de cotações por um período menor

e recalcular todos os prazos usando o histórico baixado.

Neste caso, o fechamento real em diferentes prazos também pode não coincidir.

Isto é, de uma boa maneira, você deve tomar o menor prazo e ler os valores do maior prazo.

О! Mãos!!!

Obrigado pela resposta. Mas, a julgar pela primeira parte, entendo que os erros não são críticos para mim. Muito obrigado por explicar o mecanismo desses erros.

 
Cavalheiros, o problema no código pode ajudar!
for ( shift = CountBars; shift>=0; shift--) 
{ 
         cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift-1);
         cci2 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift);  

         if ( cci1>100) // (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
         {
         val1[ shift]=Low[ shift]-5*Point;
         if ( flagval2==0) { Alert("не забудь отправить письмо о БАЙ"); flagval2=1; flagval1=0;}
         }
         if ( cci1<-100) //(b4plusdi<b4minusdi && nowplusdi>nowminusdi) 
         {
         val2[ shift]=High[ shift]+5*Point;
         if ( flagval1==0) { Alert("не забудь отправить письмо о СЕЛЛ"); flagval2=0; flagval1=1;}
         }
   }
   return(0);
}

no topo:

int flagval1=0;
int flagval2=0;

Estou lutando especificamente com estas bandeiras, qualquer um pode dar uma nova olhada?

-----------------

e há também um problema com o código EA:

//---------------------------------------------------------------- 5.1 
   cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, 1);

   if ( New_Bar==true && cci1>100 && flagval2==1)                // && MA_3_t==0   && wayDOWN==true
     {                                            
         Opn_B=true; New_Bar=false; Cls_S=true;                                  
         flagval1=1;
         flagval2=0;
     }
     
   if ( New_Bar==true && cci1<-100 && flagval1==1)                 // && MA_4_t==0  && wayUP==true
     {                                                   
         Opn_S=true; New_Bar=false; Cls_B=true;
         flagval2=1;
         flagval1=0;
     }
//--------------------------------------------------------------- 6 --

não é comercial! Talvez alguém dê uma nova olhada nele.

decidiu estupidificar assim que os 100 (-100) forem para o comércio!

Eu anexei a EA!

Arquivos anexados:
stoch_cros.mq4  17 kb