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

 
Caros novatos! Algumas questões discutidas aqui são muito específicas e realmente merecem dicas e ajuda. Mas alguns, bem, francamente, surgem do fato de que começando a programar alguns escritores EXPERT não lêem sequer um livro sobre MCL. DICA: Baixe o tutorial (5 mb) e leia-o e você não terá que esperar por uma resposta do fórum - ele estará em sua cabeça.
 
costy_ >> :

Os parâmetros de indicação salvos são "inseridos" nos indicadores uma vez durante a inicialização do modelo, depois "eles se tornam completamente independentes"/.

Todos os parâmetros indicadores alterados são salvos no modelo, se você tiver alterado os parâmetros indicadores, salve novamente o modelo.


>> Obrigado!

 

mazepa 08.12.2009 17:42

RESPOSTA: sobre o CÓDIGO!

Se eu entender o algoritmo, então na hora marcada abrimos a compra (venda), se o preço passou >10 pips na outra direção, então fechamos o pedido e ficamos na direção oposta.

Para fechar, estou usando minha própria função universal.

//Função para fechar todas as ordens de mercado em

void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //cruzar todas as ordens para todas as moedas
{
if (OrderSelect(i,SELECT_BY_POS)==true) // se a ordem for selecionada com sucesso {
if (OrderSymbol()!=Symbol()) continuar; // se o pedido estiver na moeda errada, continuar a busca
{
switch(OrderType()) //in o pedido requerido, determinar o tipo (Bue_Sell) e fechá-lo
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
caso 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
} }
return;
}
Portanto, agora antes de abrir na direção oposta, basta escrever _CloseAllOrder()

 


Amigos, eu estou apenas aprendendo. Por favor, não olhe para o conteúdo do programa, apenas me ajude a encontrar um bug no programa:

int start()
{
switch(CurrentState)
{
case STATE_SHORT:
MyOrderTicket = OrderSend(Symbol(), OP_SELLL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red);
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid+90*Point,Bid-Profit1*Point,0,Green)==verdadeiro)
{CurrentState=STATE_1;
break;
}
case STATE_1:
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if(Ask <= OrderTakeProfit())
{CurrentState=STATE_SHORT;
break;
}
if(Bid >= (OrderOpenPrice()+Profit1*Point)
{CurrentState=STATE_SHORT;
break;
}
}
//
return(0);
}


O erro é o seguinte: \ Fim_do_programa' - parêntese_esquerda desequilibrada. Onde está o erro?









 
Klinskih >> :

Amigos, eu estou apenas aprendendo. Por favor, não olhe para o conteúdo do programa, apenas me ajude a encontrar um bug no programa:

Entendi:

                    if(Bid >= (OrderOpenPrice()+ Profit1*Point)

necessidade:

                    if(Bid >= OrderOpenPrice()+ Profit1*Point)



 

Como declarar uma matriz unidimensional sem aplicar uma gravação em cada célula de memória (é possível)

  ии[1]=ExtMapBuffer1[0]; ии[2]=ExtMapBuffer2[0];  ии[3]=ExtMapBuffer3[0]; 

mas por uma seqüência unidimensional

  ии[3]={ExtMapBuffer1[0],ExtMapBuffer2[0],ExtMapBuffer3[0]} 

ou é uma seqüência unidimensional apenas para constantes numéricas e lógicas!!!?

 
TheXpert >> :

Entendi:

>> temos que fazê-lo:



Obrigado, amigo!

 
future >> :

Uma pergunta a mais. Se (OrdersTotal()==0) isto... se o número de ordens abertas for igual a zero. então como será... se o número de pedidos abertos PARA O DIA for igual a zero.

Não existe algo como OrderDayTotal?

não, mas sempre podemos escrever nossa própria função)

int OrdersDayTotal(string Symb)
 {
int cnt,
OrdersDayTotal=0,
Time0=iTime(NULL,PERIOD_D1,0);

for( cnt=0; cnt<OrdersTotal(); cnt++)
   {
   OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()== Symb && OrderType()<2)
      {
      if(OrderOpenTime()> Time0) OrdersDayTotal++;
      }
   }
for( cnt=0; cnt<OrdersHistoryTotal(); cnt++)
   {
   OrderSelect( cnt, SELECT_BY_POS, MODE_HISTORY);
   if(OrderSymbol()== Symb && OrderType()<2)
      {
      if(OrderOpenTime()> Time0) OrdersDayTotal++;
      }
   }
return( OrdersDayTotal);
 }

Conta ordens de compra e venda, para um determinado símbolo, abertas hoje. Nenhuma ordem pendente.

if(OrderDayTotal(Symbol())==0) {...}

algo parecido com isto)

 
Stepan241 >> :

mazepa 08.12.2009 17:42

RESPOSTA: Na COD!

Se eu entender o algoritmo, abrimos a compra (venda) na hora marcada, se o preço passar >10 pips na outra direção, fechamos o pedido e passamos para o lado oposto.

Eu uso minha própria função universal para fechá-la.

//Função para fechar todas as ordens de mercado na janela --------------------------------------------------------------------------------------------------
nulo _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //cull all orders for all currencies
{
se (OrderSelect(i,SELECT_BY_POS)==verdadeiro) //se o pedido for selecionado com sucesso
{
se (OrderSymbol()!=Symbol()) continuar; // se a ordem estiver na moeda errada, continue a busca
{
switch(OrderType()) // quando o pedido solicitado for apresentado, defina seu tipo (Bue_Sell) e feche-o
{
caso 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
caso 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
retornar;
}
Então agora você apenas escreve _CloseAllOrder() antes de abrir na direção oposta


A função é a bomba que me levou um par de páginas. Muito obrigado.
 
Stepan241 >> :

mazepa 08.12.2009 17:42

RESPOSTA: Na COD!

Se eu entender o algoritmo, abrimos a compra (venda) no tempo definido, se o preço tiver se movido >10 pips na outra direção, fechamos o pedido e nos movemos na direção oposta.

Eu uso minha própria função universal para fechá-la.

//Função para fechar todas as ordens de mercado na janela --------------------------------------------------------------------------------------------------
nulo _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //cull all orders for all currencies
{
se (OrderSelect(i,SELECT_BY_POS)==verdadeiro) //se o pedido for selecionado com sucesso
{
se (OrderSymbol()!=Symbol()) continuar; // se a ordem estiver na moeda errada, continue a busca
{
switch(OrderType()) // quando o pedido solicitado for apresentado, defina seu tipo (Bue_Sell) e feche-o
{
caso 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
caso 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
retornar;
}
Então agora você apenas escreve _CloseAllOrder() antes de abrir na direção oposta


A função é a bomba que me levou um par de páginas. Muito obrigado.