[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 386

 

Boa tarde.

1. Como você expressa o resultado de uma negociação, ou seja, foi lucrativa ou deficitária? Por exemplo, o último?

2. Como fazer um comércio virtual e levar em conta seu resultado (assinar) ?

 
inoy:

Boa tarde.

1. Como você expressa o resultado do comércio, ou seja, se foi lucrativo ou não lucrativo? Por exemplo, o último?

2. Como fazer uma transação virtual e prestar contas de seu resultado (assinar) ?

1. Veja estas 2 funções:

isCloseLastPosByStop
isCloseLastPosByTake

2. Há uma maneira muito simples para um comércio virtual. Aumente sua quantia de depósito em 100 vezes, bem, digamos, em vez das famosas 1000 libras, leve 100.000. E muita posição virtual reduz ao limite - para 0,01, por exemplo, quando se trabalha em lote, por exemplo, 10. 0,01 de 10 - isto é um décimo de um por cento - perdas e ganhos completamente imperceptíveis.

Marca do negócio: isLossLastPos

 
sss2019:

Ajude-me a resolver o problema, por que se o loop tem apenas 2 passes i primeiro é igual a 0 e depois imediatamente igual a 4?

A partir deste roteiro, o alerta sai 0, 4.

Bem, talvez seja patamushta:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)     // а других точно нет?
      {
.............
      Alert(i);
.............
      }
.............
    }

Talvez seja melhor assim:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    Alert(i);
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }
 
DmitriyN:

1. Confira estas 2 funções:

isCloseLastPosByStop
isCloseLastPosByTake

2. Para um comércio virtual, há uma maneira muito simples. Aumente sua quantia de depósito em 100 vezes, bem, digamos, em vez das famosas 1000 libras, leve 100.000. E muita posição virtual reduz ao limite - para 0,01, por exemplo, com um lote funcional, como 10. 0,01 de 10 - isto é um décimo de um por cento - perdas e ganhos quase imperceptíveis.

Sinal de acordo: isLossLastPos


Obrigado. Mas deve haver uma opção mais elegante para entradas virtuais, certamente. "Aumentar o tamanho do depósito em um fator de 100" - receio não ter essa opção na vida real)). Pro's, não passe por ele!
 
inoy:

Obrigado. Mas deve haver uma opção mais elegante para entradas virtuais, certamente. "Aumentar o tamanho do depósito em um fator de 100" - receio não ter essa opção na vida real)). Pro's, não passe por ele!

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles
 
Vinin:

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles

Obrigado.
 
DhP:

Tente isto:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.

Boa tarde. Tentei consertar agora a coruja faz apenas um comércio fechar com prejuízo e pronto.

Arquivos anexados:
 
artemka_1981:

Boa tarde.tentou consertar agora a coruja faz com que apenas uma profissão feche com prejuízo e não há mais nenhuma profissão aberta.diga-me o que está errado

if(OrdersTotal()==0)GO=true;
 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}
DhP:

Olá. Nada está funcionando. Desculpe, está tudo bem. Só fiquei confuso. Muito obrigado.
 
Olá. A função iMaOnArray utiliza um conjunto de dados pré-preparados, que está escrito nesta função sem parênteses rectos. E se esta matriz for bidimensional? (por exemplo, Mas[4][100], ou seja, 4 matrizes independentes de 100 pontos cada)