[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 155

 
vovander:
que tipo de valor o OrderType() retorna? Obrigado

int OrderType( )
 

Tenho uma variável externa externa em minha placa. Se eu a prendo a dois pares diferentes e mudo esta externa em um deles, ela também muda no outro por alguma razão(

Como separá-los? Encontrei uma solução com parâmetros de corda - acrescento um nome simbólico no final da inicialização. mas e quanto aos inteiros e dublos?

---

outra pergunta sobre as funções da kim.

tem

//| sy - nome do instrumento ( "" - qualquer símbolo, |
//| NULL - símbolo corrente) |
//| op - operação ( -1 - qualquer posição) |
//| mn - MagicNumber ( -1 - qualquer magik) |
//+ +
void SimpleTrailing(string sy="", int op=-1, int mn=-1)

isto é, se eu chamar o SimpleTrailing(), a função funciona para todos os pares

mas se eu chamar o SimpleTrailing(NULL), então ele funciona apenas para aquele que tem a coruja em sua carta?

isto é alguma característica não documentada ou o quê? não consegui encontrar nenhuma referência ao NULL na função.

ou o SimpleTrailing(NULL) e o SimpleTrailing() são a mesma coisa?

 
Omm:

Pergunta idiota. existem variáveis externas no quadro. se eu ligá-lo a dois pares diferentes e mudar este externo em um deles, ele também muda no outro por alguma razão(

Encontrei uma solução para os parâmetros das cordas - anexei um nome simbólico ao final da função durante a inicialização.

---

outra pergunta sobre as funções da kim.


isto é, se eu chamar o SimpleTrailing(), então a função funciona para todos os pares

mas se eu chamar o SimpleTrailing(NULL), então ele funciona apenas para o par com a coruja?

Isto é alguma característica não documentada ou o quê? não consegui encontrar nenhuma referência ao NULL na função.

ou SimpleTrailing(NULL) e SimpleTrailing() são a mesma coisa?

1. Você está dizendo o impossível! - O que significa que você deve estar dizendo algo "errado". Posso assumir que a EA não utiliza o identificador - OrderMagicNumber().

2. Eu olhei para o código - algo me diz que o uso do SimpleTrailing() será idêntico ao SimpleTrailing(NULL). Cabe a você verificá-lo. E para que a função funcione com uma ferramenta gráfica, chame-a da seguinte forma: SimpleTrailing (Símbolo()).

 

1. este EA http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=42

A magia está formalmente lá (também no exterior por alguma razão), mas não entendo como fazer com que ela funcione.

Estou apenas tentando adicionar o Breakeven e o Trawl.

2. A questão está resolvida.

Encontrei-o em outra f-fi se (sy=="0") sy=Symbol();

Acho que o autor esqueceu de adicioná-lo a este aqui.

 

O que eu preciso é para a função Breakeven https://forum.mql4.com/ru/11287/page55#11315

trabalhar uma vez em uma determinada posição de um determinado símbolo

O que devo mexer no conservatório?

if(ExistPosições(Símbolo() )
{
para (int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol()==Symbol() )
MovingInWL(Símbolo())

}

}

 

Vocês têm uma função. Há várias encomendas de diferentes volumes.

Por exemplo, ordem1=0,1, ordem2=0,2, ordem3=0,3, ordem4=0,4 - a quantidade total de negócios é de 1 lote.

Em determinado momento, preciso fechar parte dos pedidos para o valor total de um determinado lote.

Por exemplo, eu preciso fechar 0,5 lotes. Portanto, precisamos de uma função que feche a ordem4=0,4 e o restante, por exemplo, da ordem3. Ou ordem1, ordem2 e o restante da ordem3.

 
Omm:

O que eu preciso é para a função Breakeven https://forum.mql4.com/ru/11287/page55#11315

trabalhar apenas uma vez em uma determinada posição de um determinado símbolo

O que devo consertar no conservatório?

Esta função tem verificação de disparo único - não há necessidade de inventar nada:

    if (ExistPositions (Symbol(), -1, Magic))
    {MovingInWL (Symbol(), -1, Magic);}

E a função MovingInWL() deve ser um pouco afinada:

void MovingInWL (string sy = "", int op = -1, int mn = -1)
{
    double po, pp, ld_BU;
    int    i, k = OrdersTotal();
//----
    if (sy = "0") sy = Symbol();
    for (i = k - 1; i >= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue;
        if (sy != "") if (OrderSymbol() != sy) continue;
        if (mn >= 0) if (mn != OrderMagicNumber()) continue;
        po = MarketInfo (OrderSymbol(), MODE_POINT);
        if (OrderType() == OP_BUY)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() - OrderOpenPrice() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_BID);
                if (pp - OrderOpenPrice() > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() + LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                    continue;
                }
            }
        }
        else if (OrderType() == OP_SELL)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() == 0 || OrderOpenPrice() - OrderStopLoss() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_ASK);
                if (OrderOpenPrice() - pp > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() - LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                }
            }
        }
    }
//----
}
 

Por favor, ajude-me a mudar a função, no indicador Alto Baixo de vela semanal parece assim

se (TimeDay(Time[i])!=TimeDay(Time[i+1])
{
if(TimeDayOfWeek(Time[i])==1)

Preciso de um castiçal mensal com um castiçal alto e baixo. Obrigado

 

TarasBY, não funciona assim.

No e-TFL_V2 eu adiciono estas duas linhas para iniciar() e a própria função MovingInWL.

Se várias posições estiverem abertas, o breakeven é fixado em apenas uma delas. em cada carrapato tenta fazer isso novamente.

Assim que uma posição de Breakeven é fechada, ela a coloca na próxima posição.

Se notei na primeira mensagem que o valor do breakeven é o mesmo para todos os símbolos, mesmo que eu tenha definido números diferentes na janela de ajustes da EA.

Não tenho certeza onde está a verificação de disparo único?

p.s. obrigado pela função corrigida. estou testando em 5 dígitos, mas acho que a maioria das funções da kim funcionam de qualquer forma.

p.s.s. Eu o administrei por um tempo. Parecia funcionar. foi o bug da MovingInWL. obrigado mais uma vez. tenho lutado com ele há dois dias))

p.s.s. não consigo entender por que a Magic deve ser movida para parâmetros externos da EA?

 
Como criar meu próprio servidor para Metatrader, ou seja, um servidor ao qual outra pessoa do meu mt possa se conectar?