aventuras de um novato - página 11

 
niko:
graças à CB, eu deveria ter notado isso, então o erro estava certo no final (130).

Está funcionando então?


CB

 

Ei CB, ele está executando as negociações, mas eu ainda não fiz o detalhamento das negociações para ver se a lógica é seguida corretamente (parece ser à primeira vista). Portanto, esta é a hora que eu digo um enorme "OBRIGADO!!!!" :-)

Ainda é um caminho e tanto antes que a estratégia esteja funcionando de forma lucrativa, já que o código é apenas uma forma de automatizar as negociações, eu preciso fazer um pouco de trabalho no meu fim para refinar a estratégia em si. Parece que todo este esforço valeu a pena, mas ainda estou super intrigado com a codificação. Vou começar a fazer pequenos códigos por conta própria para exibir comentários nos meus gráficos, e mexer com eles, para me ajudar a aprender funções e outras coisas que você usou. Aprecio muito sua ajuda com este CB e sua paciência, já que eu continuava pedindo a mesma coisa e cometendo os mesmos erros repetidamente. Obrigado!

 
CB, isto me fez lembrar de algo. Como eu poderia fazer um amedimento ao seu código para permitir que 2 ou no máximo 3 negócios fossem abertos na mesma direção (isto é como uma versão 2 do seu código). Usamos o OP_BUY/OP_SELL para o código antigo, então precisaremos mudar algumas coisas. Se você me disser em 'esqueleto' o que fazer (por exemplo: construir uma função para fazer isto...) então eu posso tentar codificá-la, e levá-la de volta para você para revisão. Desta forma é melhor do que se você mesmo a codificar, pois eu posso seguir sua lógica e aprender bits de codificação. O que você acha? (vejo que temos uma variável externa na qual definimos quantos negócios nos são permitidos na mesma direção, depois fazemos uma função para calcular compras, outra para calcular vendas, depois chamamos essas duas funções no início() e verificamos a variável externa lá também... algo parecido com isto?
 

Isso será fácil.

Defina a si mesmo um parâmetro que é o número máximo de ordens abertas. Externalize-o se você precisar mudá-lo com freqüência.

Em seguida, implemente alterando apenas a função fnOrderDuplicate() - você não deve ter que alterar a função start(). Isso ajudará a manter a arquitetura existente do aplicativo.


CB

 
cara, desejo um dia poder dizer 'isso será fácil'. ok, eu faço isso, e veja o que acontece! obrigado!
 

Ei CB, eu passei tipo 2 horas agora tentando fazer o que você pediu no posto acima, olhei outros códigos, documentação e nenhum progresso (eu simplesmente não sei o que fazer). Cara, eu continuo ficando preso assim, é tão irritante, mesmo com as coisas mais simples! deve haver uma maneira de aprender mais fácil do que como estou indo no momento, como eu sinto que não estou tendo nenhum progresso no aprendizado, vocês estão gentilmente escrevendo todo o código para mim


bool fnOrderDuplicate()
 {
  iDuplicateOrders = 0;                                  //setting orderdup to zero
  iOrders = OrdersTotal()-1;                             //iOrders returns market orders count - 1. So if zero orders, we get -1
  for (int i= iOrders; i>=0; i--)                         // the loop to cycle through total orders
   {
    OrderSelect( i, SELECT_BY_POS, MODE_TRADES);            //select order for function
    if ((OrderType() != OP_BUY) && (OrderType() != OP_SELL))      //if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
     sCurrentOrderType = "OTHER";
    if (OrderType() == OP_BUY)                           //if order=buy, sCurrent OrderType = buy
     sCurrentOrderType = "BUY";                          //***7Jul09 ';' was missing at end of line
    if (OrderType() == OP_SELL)                          //***7Jul09: the end ')' was missing.
     sCurrentOrderType = "SELL";                         //if orderfound = sell, sCurrentOrder= sell
    if ((OrderSymbol() == Symbol()) && ( sCurrentOrderType == sSignal))  //if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules) 
        iDuplicateOrders++;                              //iDuplicateOrders is added 1
   }
  if ( iDuplicateOrders == 0)                             //if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.
   return(false);
  return(true);
 }
 
hey CB, alguma ajuda sobre o ponto acima, como consertar o código para fazer múltiplos negócios em 1 direção?
 
niko:
hey CB, alguma ajuda sobre o ponto acima, como consertar o código para fazer múltiplos negócios em 1 direção?

Basta mudar: if (iDuplicateOrders == 0) para: if (iDuplicateOrders<= iMaxDuplicateOrders)

CB

 

Hey CB, obrigado por isto. Com esta opção eu não posso regular quantas ordens abertas são permitidas em 1 direção (digamos que eu faço ordens iMaxDuplicateOrders externas = 4;) a ea vai executar 4 shorts, e não distribuir o parâmetro uniformemente (por exemplo: 2 shorts no máximo, 2 longs no máximo). Devo fazer um duplicado de bool fnOrderDuplicate (por exemplo: bool fnOrderDuplicateBuys, e bool fnOrderDuplicateSells) e depois me referir a cada um respectivamente em bool fnShouldWeTrade. Em minha opinião, o que você acha que isto poderia funcionar?

 
niko:

Hey CB, obrigado por isto. Com esta opção eu não posso regular quantas ordens abertas são permitidas em 1 direção (digamos que eu faço ordens iMaxDuplicateOrders externas = 4;) a ea vai executar 4 shorts, e não distribuir o parâmetro uniformemente (por exemplo: 2 shorts no máximo, 2 longs no máximo). Devo fazer um duplicado de bool fnOrderDuplicate (por exemplo: bool fnOrderDuplicateBuys, e bool fnOrderDuplicateSells) e depois me referir a cada um respectivamente em bool fnShouldWeTrade. Em minha opinião, o que você acha que isto poderia funcionar?


A definição de iMaxDuplicateOrders = 4 significará que o máximo serão 4 ordens em cada direção, pois verificamos a direção antes de incrementar o contador.


Crédito onde o crédito é devido. O contrário é devido neste caso. Desculpas - já estava decepcionado por não ter sido você mesmo a fazer a emenda. Tudo o que precisava ser feito era mudar o limite de uma única ordem para uma variável.


Fica claro pelas anotações que você está simplesmente recriando o código em prosa sem realmente entender a lógica.


CB

Razão: