Qualcuno ha ritirato denaro da un broker utilizzando strategie di arbitraggio? - pagina 15

 

Gli arbitri in generale sono intrinsecamente semplici, la loro forza è nella velocità, e lì c'è poca logica.

Per esempio, qui c'è tutto l'arbitro, un piede, l'altro la stessa cosa, ma al contrario.

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:

L'ho reso più "semplice", ho costruito uno spread chart off-line e ho eseguito degli script su di esso, la comodità è che tutti i dati sono pronti e gli indicatori sono calcolati

per la ricerca del valore medio dello spread è stato utilizzato un semplice grafico o una Bollinger

Lo stesso script di arbitraggio viene eseguito su questo grafico; questo schema accelera notevolmente il funzionamento dello script.

La media non stava cambiando velocemente, così ho inserito i turni da linee orizzontali

Facevo qualcosa di simile. Stavo scrivendo i tic in un file. Dal file è stato creato un grafico offline ticks/spreads utilizzando un semplice indicatore + indicatore-tester, che ha prodotto la seguente immagine

Rosso - profitto . Verde/giallo - lungo/corto. Bianco - comis

 
Per qualche motivo non ho visto arbitraggisti nelle classifiche dei migliori conti broker, e potrebbero almeno ingannare gli abbonati a prendere profitti extra nei servizi di autocopiatura facendo pagare loro una commissione. O semplicemente non poteva identificare che si trattava esattamente di arbitraggio. Per la maggior parte non sono martingale molto longeve, ma ci sono eccezioni che sono al top per l'anno.