Quelqu'un a-t-il retiré de l'argent d'un courtier en utilisant des stratégies d'arbitrage ? - page 15

 

Les arbitres en général sont intrinsèquement simples, leur force est dans la rapidité, et il y a peu de logique là-dedans.

Par exemple, voici l'ensemble de l'arbitre, un pied, l'autre la même chose, mais en sens inverse.

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:

Je l'ai fait "plus simple", j'ai construit un spread chart hors ligne et j'ai exécuté des scripts dessus, l'avantage est que toutes les données sont prêtes et que les indicateurs sont calculés.

un graphique simple ou un Bollinger a été utilisé pour rechercher la valeur moyenne de l'écart.

Le script d'arbitrage lui-même est exécuté sur ce graphique ; ce schéma accélère considérablement le fonctionnement du script.

La moyenne ne changeait pas rapidement, donc j'ai entré les changements de lignes horizontales.

J'avais l'habitude de faire quelque chose de similaire. J'écrivais des tics dans un fichier. À partir du fichier, un graphique ticks/spreads hors ligne a été créé à l'aide d'un indicateur simple et d'un indicateur-test, ce qui a donné l'image suivante

Rouge - profit . Vert/jaune - long/short. Blanc - comis

 
Pour une raison quelconque, je n'ai pas vu d'arbitres dans les classements des meilleurs comptes de courtage, et ils pourraient au moins inciter les abonnés à prendre des bénéfices supplémentaires dans les services d'autocopie en leur faisant payer une commission. Ou ne pouvait pas identifier que c'était exactement de l'arbitrage. Pour la plupart, ce ne sont pas des martingales à très longue durée de vie, mais il y a des exceptions qui sont au top pour l'année.