Características úteis da KimIV - página 119

 
M2012K:

Olá colegas, ainda estou aprendendo os códigos, não consigo entender bem os meandros e estou em um pequeno dilema.

Pelo que entendi, precisamos fazer uma chamada para esta função para corrigir os parâmetros antes de fazer um pedido.

Existe tal linha para abrir um pedido:

if(buy === true && Open[0]>UpTr && Trade) {

buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "T",Magic,0,MediumBlue);

é aqui que deve ser abordado? E como fazer isso corretamente. Ou este comando não precisa deCorrectingPrice()?

Agradecemos antecipadamente.

Antes de enviar um pedido comercial ao servidor, você já deveria ter calculado os preços StopLoss e TakeProfit. Eles, como vejo, são armazenados em variáveis, respectivamente sl e tp.

Então, inicie esta função e insira os nomes de suas variáveis nela:

CorrectingPrice(Symbol(), OP_BUY, Ask, sl, tp);

Ele as corrigirá para você, se necessário...

E depois de chamar esta função, você pode chamar a função de posição aberta

 

Boa tarde.

Eu uso a função PriceOpenNearPos () da KimIV. Notei que às vezesaposiçãomais próximaé perdida e outraposição é utilizada. Então eu fiz código para um teste onde você pode ver como posiçãomais próxima é perdida no registro.Por favor, verifique porque isso acontece.

int    magic    = 665544;

bool flag = false;

 

int start()

  {

//----

if((PriceOpenNearPos(NULL, OP_BUY, magic) != 0

&& PriceOpenNearPos(NULL, OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos(NULL, OP_BUY, magic)+ 0.1 > Bid))

flag = true;

else

flag = false;

 

Print("::::::::::::::::::::::::: flag = ",  flag );

Print("PriceOpenNearPos(NULL, OP_BUY, magic)= ", PriceOpenNearPos(NULL, OP_BUY, magic));

 

if(!flag)

OpenPosition(NULL, OP_BUY, 0.1,0,0,magic);  

//----

   return(0);

  }

De acordo com as condições, as posições não devem se sobrepor umas às outras , mas quando eu corro o testador, posso ver que as posições se sobrepõem.(usdjpy 5m).

 
artmedia70:

Antes de enviar um pedido comercial ao servidor, você já deveria ter calculado os preços StopLoss e TakeProfit. Eles, como vejo, são armazenados em variáveis, respectivamente sl e tp.

Portanto, execute esta função, inserindo os nomes de suas variáveis nela:

Ele as ajustará para você, se necessário...

E após esta função ser chamada, você pode chamar a função de abertura de posição


Obrigado, entendi. :)
 
abeiks:

Boa tarde.

Eu uso a função PriceOpenNearPos () da KimIV. Noto que às vezesaposiçãomais próximaé perdida e outraposição é utilizada. Então eu fiz código para um teste onde você pode ver como posiçãomais próxima é perdida no registro.Por favor, verifique porque isso acontece.

De acordo com as condições, as posições não devem se sobrepor umas às outras , mas quando eu corro o testador, posso ver que as posições se sobrepõem.(usdjpy 5m).


Verificado... no testador... Tudo está bem. Mostre-me você mesmo como se perdem posições. Ou explique com mais detalhes o que você chama exatamente de posições perdidas.

Anexo aqui meu Expert Advisor pronto para testes com todas as funções extras.

Arquivos anexados:
 

Ver anexo. De acordo com as condições, as posições não devem se sobrepor, mas no terminal podemos ver que 3 e 9 posições abrem pelo mesmo preço (também 4, 6, 8). Além disso, olhamos os arquivos de registro e vemos que em algum momento a posição 98.179 está perdida e aparece 98.301. Portanto, as posições se sobrepõem.

 
abeiks:

Ver anexo. De acordo com as condições, as posições não devem se sobrepor, mas no terminal podemos ver que 3 e 9 posições abrem pelo mesmo preço (também 4, 6, 8). Além disso, olhamos os arquivos de registro e vemos que em algum momento a posição 98.179 está perdida e aparece 98.301. Portanto, as posições se sobrepõem.


Obrigado por seu código, pelos materiais fornecidos e por sua paciência!

Eu consertei a função. Aqui está a nova versão:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.07.2013                                                     |
//|  Описание : Возвращает цену открытия ближайшей к рынку позиции.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) {
  double mi, oop=0, p;
  int    i, k=OrdersTotal(), pp=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

Eis como funciona agora... sem sobreposições

Arquivos anexados:
 
KimIV:


Obrigado por seu código, materiais fornecidos e paciência!

Fixou a função. Aqui está a nova versão:

Eis como funciona agora... sem sobreposições


Obrigado, tudo funciona! :)
 
KimIV:


Fixou a função. Aqui está a nova versão:

Igor, há algum lugar onde você colocou suas novas bibliotecas, com suas novas funcionalidades ou com algumas de suas funcionalidades alteradas?

Em outras palavras - bibliotecas atualizadas com emendas e adições já feitas.

 
artmedia70:

Igor, há algum lugar onde você colocou suas novas bibliotecas, com suas novas funcionalidades ou com emendas em algumas de suas funcionalidades?

Em outras palavras - bibliotecas atualizadas com emendas e adições já feitas.


Nenhum postado ainda... Ainda não tive tempo... Mas de qualquer forma... Estou sempre ajustando-as. E já escrevi 30 ou mais novas. Eu os coloco aqui discretamente quando tenho tempo e inclinação))))

SZY. Posso enviar todas as bibliotecas por e-mail, como está, mas se você publicar, é necessário preparar a descrição ou pelo menos a lista e a finalidade das funções para especificar...

 
KimIV:


Nenhum postado ainda... Ainda não tive tempo... Mas de qualquer forma... Estou sempre afinando as coisas neles. E já escrevi 30 ou mais novas. Eu os coloco aqui discretamente quando tenho tempo e inclinação))))

ZS. Posso enviar todas as libras como estão, mas se você as publicar, deve preparar uma descrição ou pelo menos indicar a lista e a finalidade das funções...

Oh... será interessante dar uma olhada :) Vou colocá-lo em meu e-mail.
Razão: