Hat jemand schon einmal Geld von einem Broker abgehoben, der Arbitrage-Strategien verwendet hat? - Seite 15

 

Schiedsrichter sind von Natur aus einfach, ihre Stärke liegt in der Schnelligkeit, und da gibt es wenig Logik.

Hier ist zum Beispiel der ganze Schiedsrichter, ein Fuß, der andere das Gleiche, aber umgekehrt.

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:

Ich habe es "einfacher" gemacht, ich habe ein Offline-Spread-Chart erstellt und Skripte darauf laufen lassen, der Komfort ist, dass alle Daten bereit sind und die Indikatoren berechnet werden

ein einfaches Diagramm oder ein Bollinger-Diagramm wurde für die Suche nach dem durchschnittlichen Spread verwendet

Das Arbitrage-Skript selbst wird auf diesem Chart ausgeführt; dieses Schema beschleunigt die Arbeit des Skripts erheblich.

Der Durchschnitt änderte sich nicht schnell, also gab ich Verschiebungen von horizontalen Linien ein

Früher habe ich etwas Ähnliches gemacht. Ich habe Tics in eine Datei geschrieben. Aus der Datei wurde ein Offline-Ticks/Spreads-Chart mit einem einfachen Indikator + Indikator-Tester erstellt, der folgendes Bild ergab

Rot - Gewinn . Grün/gelb - lang/kurz. Weiß - Comis

 
Aus irgendeinem Grund habe ich keine Arbitrageure in den Top-Broker-Kontoranglisten gesehen, und sie könnten zumindest die Abonnenten dazu bringen, zusätzliche Gewinne bei Autokopierdiensten zu erzielen, indem sie ihnen eine Provision berechnen. Oder sie konnten einfach nicht erkennen, dass es sich um Arbitrage handelte. In den meisten Fällen handelt es sich nicht um sehr langlebige Martingale, aber es gibt Ausnahmen, die im Laufe des Jahres an der Spitze liegen.
Grund der Beschwerde: