Alguém já retirou dinheiro de um corretor utilizando estratégias de arbitragem? - página 15

 

Os árbitros em geral são simples por natureza, sua força está na velocidade, e há pouca lógica ali.

Por exemplo, aqui está o árbitro inteiro, um pé, o outro a mesma coisa, mas ao contrário.

void OnTick()
  {
//---
   if(IsTradeAllowed()==false)return;
   double LastLot=0;
   while(!IsStopped())
   {
      if(IsTradeAllowed()==false)return;
      if(AccountFreeMargin()/AccountBalance()<0.3)
      {
         Sleep(1000);
         continue;
      }
      //double randB=(MathRand()/32768.0);
      //Percent=iATR(NULL,1,14,0)/100;
      //if(Percent<0.004)Percent=0.004; NMCUSD = NMCBTC/BTCUSD
      //Ask_Buy=Ask_LTCUSD/Bid_LTCBTC;
      //Ask_LTCUSD=Ask_Buy*Bid_LTCBTC
      double Bid_LTCBTC=MarketInfo("LTCBTC",MODE_BID);//-0.005*MarketInfo("LTCBTC",MODE_BID);
      double Ask_BTCUSD=MarketInfo("BTCUSD",MODE_ASK);//-0.005*MarketInfo("BTCUSD",MODE_BID);
      double Ask_LTCBTC=MarketInfo("LTCBTC",MODE_ASK);//+0.005*MarketInfo("LTCBTC",MODE_ASK);
      double Bid_BTCUSD=MarketInfo("BTCUSD",MODE_BID);//+0.005*MarketInfo("BTCUSD",MODE_ASK);
      LotDepo=(AccountBalance()*0.001)*Bid_BTCUSD*PercentDepo;
      double    Ask_Buy=Bid_BTCUSD*Bid_LTCBTC;
      double    Bid_Sell=Ask_BTCUSD*Ask_LTCBTC;
      double StepB=Ask_Buy-(Ask_Buy*Percent);
      //double randS=(MathRand()/32768.0);
      double StepS=Bid_Sell+(Bid_Sell*Percent);
      Comment(StepS," ",Bid_BTCUSD," ",Bid_LTCBTC);
      RefreshRates();
      //WindowRedraw();
      //Comment(GetTickCount()," ",StepB, " ",StepS, "Bid: ",Bid," Ask: ",Ask);
      int tSL=0,tBL=0;
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS)&&OrderMagicNumber()==magik)
         {
            int cmd=OrderType();
            if(cmd==OP_SELLLIMIT)
            {
               tSL++;
               tick=OrderTicket();
               //OrderDelete(OrderTicket());
               if(MathAbs(NormalizeDouble(OrderOpenPrice(),Digits)-NormalizeDouble(StepS,Digits))>0.000001)
               {
                  if(StepS<Bid)
                     OrderModify(OrderTicket(),NormalizeDouble(Bid,Digits),0,0,0);
                  else
                     OrderModify(OrderTicket(),NormalizeDouble(StepS,Digits),0,0,0);
                  //Print(GetLastError());
               }
               if(LastLot>OrderLots())
               {
                  if(OrderDelete(OrderTicket()))
                  LastLot=LastLot-OrderLots();
               }
            }
         }
      }
      if(tSL==0)
      {
         if(StepS<Bid)
         {
            if(LastLot>=MarketInfo("LTCBTC",MODE_MINLOT))
            {
               OrderSend("LTCBTC",OP_BUY,LastLot,NormalizeDouble(MarketInfo("LTCBTC",MODE_ASK),int(MarketInfo("LTCBTC",MODE_DIGITS))),200000,0,0,NULL,magik,0);
               OrderSend("BTCUSD",OP_BUY,NL("BTCUSD",LastLot*MarketInfo("LTCBTC",MODE_ASK)),NormalizeDouble(MarketInfo("BTCUSD",MODE_ASK),int(MarketInfo("BTCUSD",MODE_DIGITS))),200000,0,0,NULL,magik,0);
            }
            Lot=/*LotDepo;*/ NL(Symbol(),LotDepo/Bid);
            OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid,Digits),200000,0,0,NULL,magik,0);
            LastLot=Lot;
         }
         else
         {
            if(LastLot>=MarketInfo("LTCBTC",MODE_MINLOT))
            {
               OrderSend("LTCBTC",OP_BUY,LastLot,NormalizeDouble(MarketInfo("LTCBTC",MODE_ASK),int(MarketInfo("LTCBTC",MODE_DIGITS))),200000,0,0,NULL,magik,0);
               OrderSend("BTCUSD",OP_BUY,NL("BTCUSD",LastLot*MarketInfo("LTCBTC",MODE_ASK)),NormalizeDouble(MarketInfo("BTCUSD",MODE_ASK),int(MarketInfo("BTCUSD",MODE_DIGITS))),200000,0,0,NULL,magik,0);
            }
            Lot=/*LotDepo;*/ NL(Symbol(),LotDepo/StepS);
            OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(StepS,Digits),200000,0,0,NULL,magik,0);
            LastLot=Lot;
         }
      }
      Sleep(1);
   }
     }
 
Alexandr Bryzgalov:

Eu o tornei "mais simples", construí um gráfico de distribuição off-line e executei scripts nele, a conveniência é que todos os dados estão prontos e os indicadores são calculados

um gráfico simples ou um Bollinger foi utilizado para a busca do spread médio

O próprio roteiro de arbitragem é executado neste gráfico; este esquema acelera muito a operação do roteiro.

A média não estava mudando rapidamente, então eu entrei em turnos a partir de linhas horizontais

Eu costumava fazer algo semelhante. Eu estava escrevendo tiques em um arquivo. A partir do arquivo foi criado um gráfico de ticks/spreads offline usando um simples indicador + indicador-tester, que produziu a seguinte imagem

Vermelho - lucro . Verde/amarelo - longo/curto. Branco - comis

 
Por alguma razão, não tenho visto árbitros nos rankings das contas dos corretores de primeira linha, e eles poderiam pelo menos enganar os assinantes para que eles obtenham lucros extras em serviços de cópia automática, cobrando-lhes uma comissão. Ou simplesmente não conseguia identificar que era exatamente uma arbitragem. Em sua maioria, não são martingales de longa duração, mas há exceções que estão no topo para o ano.