Spread-Handel in Meta Trader - Seite 31

 
neoclassic >>:

Продавая USDCAD и покупая DX вы покупаете индекс канадца. На поведение индекса можно посмотреть с помощью того же СС - его динамика ничем не отличается от других индексов. Так что такая торговля на мой взгляд - будет 50/50.


Es ist möglich! Ich werde mich nicht streiten.

Wir werden also weiter suchen. Suche nach anderen geeigneten Werkzeugen.

Im Übrigen. Gestern kurz vor Ende des Handels auf Fduch Index ich eingegeben (BUY ZC + SELL ZW)

Jetzt gibt es {+300 Pips (Mais) -175 Pips (Weizen) }

 
neoclassic >>:

Продавая USDCAD и покупая DX вы покупаете индекс канадца. На поведение индекса можно посмотреть с помощью того же СС - его динамика ничем не отличается от других индексов. Так что такая торговля на мой взгляд - будет 50/50.


Berechnen Sie dann bitte die Formel für die kanadische Indexformel. Wenn es sie gibt, natürlich ))) ... Eigentlich ist es besser, natürlich den Euro im "Tandem" zu nehmen. Da er im Index mehr Gewicht hat. Setzen Sie einfach ein Minuszeichen in die Formel des indy für seine normale Anzeige. Und können Sie uns mitteilen, wie Sie den Koeffizienten für das "Tandem" berechnen, d. h. das Gewicht der Paare im Geschäft?

 

Ich habe noch keine ernsthaften Berechnungen angestellt. D.h. - soweit das Auge reicht, - ungefähr.

Für (Dax/Futsi) - das Verhältnis von Losen 1,2/3 und Delta nicht weniger als 200 T, - habe ich als Ergebnis von vielen Wochen der Beobachtung abgeleitet.

EURIPY+USDJPY - Ich nehme die gleichen Losgrößen. In 2,5 Wochen Online-Arbeit (Delta = 20-30 Pips) hat dieser "Hedge" nicht mehr als 2-3 Tage ausgegeben.

Ich habe ihn mit einem Gesamtgewinn von 5 bis 20 Pips geschlossen.

 
"Mehrwöchige Überwachung"? Wäre es nicht einfacher, einfach Daten zu sammeln?
 

Unwahrscheinlich, dass das klappt. "Crazy Dax"(c) und "Pretty Footsie"(c) in der "besprochenen Version" werden auf unterschiedlichen Plattformen gehandelt.

Futsi beginnt täglich eine Stunde später als Dax. Darüber hinaus gibt es in der Geschichte eine ganze Reihe von Tagen, an denen der Dax gehandelt wurde und der Futsi "aus" war oder umgekehrt. Die Geschichte dieser Instrumente ist also um ein Vielfaches verschoben und hat daher wenig Glaubwürdigkeit.

 
rid >>:

Вряд ли получится. "Бешеный Дакс"(с) и "красотка Футси"(с) в "обсуждаемом варианте" торгуются на разных площадках.

Ежедневно футси стартует на час позже дакса. Более того, на истории достаточно много дней, когда дакс торговался, а футси был(а) "на выходных", или наоборот. Так что, история этих инструментов многократно сдвинута относительно др-друга и, по этой причине, мало достоверна.

Das ist in Ordnung. Wir werden nie besser spielen als die großen Onkel auf ihrem Platz. Und auf einem Feld wie diesem haben die großen Onkel nichts zu suchen.

Das ist unser Brot und Butter.

 
Fduch >>:
По открытиям баров

Ich mache einen "Quasi-Arbitrage"-EA, der im Tester auf beiden "Hedge"-Instrumenten mit simulierten virtuellen Trades auf dem zweiten Symbol ausgeführt werden kann.

Es stellt sich eine Frage.

Bitte beraten Sie mich.

Wie kann ich Ihre Funktion ändern?

//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;   double N = 0;   double Sum = 0;
   for( k = 0; k < iBars( Symbol_1, Timeframe); k++)
   {
      if( N == NBars)          break;

      int symb2Shift = iBarShift( Symbol_2, Timeframe,iTime( Symbol_1, Timeframe, k),true);
      if( symb2Shift != -1)
      {
         Sum += iClose( Symbol_1, Timeframe, k) - iClose( Symbol_2, Timeframe, symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return( avarageSpread);
}

Es würde nicht den durchschnittlichen Spread der letzten NBars ?

Aber für die vorletzten NBars.

D.h. für einen Zeitraum vom(2*NBars)-ten Takt bis zum NBars?

Frage an alle, die antworten können.

Weil ich hier sitze und es nicht begreifen kann.

 
//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;   double N = 0;   double Sum = 0;
   for( k = NBars; k < iBars( Symbol_1, Timeframe); k++)
   {
      if( N == NBars)          break;

      int symb2Shift = iBarShift( Symbol_2, Timeframe,iTime( Symbol_1, Timeframe, k),true);
      if( symb2Shift != -1)
      {
         Sum += iClose( Symbol_1, Timeframe, k) - iClose( Symbol_2, Timeframe, symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return( avarageSpread);
}
 

Vielen Dank, getch! Ich werde es jetzt in die Tat umsetzen.

Es stellte sich heraus, dass es einfacher war, virtuelle Trades des zweiten Absicherungsinstruments im Tester zu implementieren, als ich zunächst dachte.

Ich habe die Arbeit nach Eröffnungskursen aufgebaut, weil das Testprogramm keine MarketInfo(Symbol_2,MODE_BID) Bids und Asks zurückgibt; Eröffnungs- und Schlusskurse werden jedoch vom Testprogramm normal zurückgegeben.

Jetzt teste ich es mit tf=m1 für bessere Genauigkeit

Für diejenigen, die daran interessiert sind und die es brauchen, hier sind Fragmente unserer (rid+leonid553) Programmlösung.

Hedge-Eröffnung von 1 Typ (d.h. sell1+by2) :

Über kritische Kommentare würde ich mich freuen.

double POINT_1 = MarketInfo( Symbol_1,MODE_POINT); 
double POINT_2 = MarketInfo( Symbol_2,MODE_POINT); 

double  Close_Symbol_1 = iClose( Symbol_1,Period(),1); 
double  Close_Symbol_2 = iClose( Symbol_2,Period(),1);
//-----------------------------------------------------



if ( TradeUP==true && флаг1==0) {//если условия первого хеджа
//соответствуют заданным  
//продаем 1-й символ и покупаем второй символ 
//-------------------------------------
if(Symbol()!= Symbol_2 && IsTesting() == True) {//при тестировании 2-го
// инструмента команду  не выполняем !
if ( NumberOfPositions( Symbol_1,OP_SELL, Magic)<1  ){//нет поз селл по 1-му символу
 SL=0; TP=0;
if( StopLoss>0)   SL= Bid_1+ POINT_1* StopLoss;
if( TakeProfit>0) TP= Bid_1- POINT_1* TakeProfit; 
ti= OpenPosition( Symbol_1, OP_SELL, Lots_1,0 ,0, Magic);
if (OrderSelect( ti, SELECT_BY_TICKET))
 ModifyOrder(-1, SL, TP, clModifySell);  
    }
                   }//if (IsTesting() == True)
//--------------------------------------
if(Symbol()!= Symbol_1 && IsTesting() == True) {//при тестировании 1-го
// инструмента команду не выполняем !
 if ( NumberOfPositions( Symbol_2,OP_BUY, Magic)<1) { //нет  поз бай по 2-му символу 
   SL=0; TP=0;
if( StopLoss>0)   SL= Bid_2- POINT_2* StopLoss;
if( TakeProfit>0) TP= Ask_2+ POINT_2* TakeProfit;   
ti= OpenPosition( Symbol_2, OP_BUY, Lots_2,0,0, Magic);
if (OrderSelect( ti, SELECT_BY_TICKET))
  ModifyOrder(-1, SL, TP, clModifyBuy); 
          }
                         }//if (IsTesting() == True) {         
//--------------------------------------------------                                                    
                                 } //если условия соответствуют заданным

Als Nächstes, eigentlich - der virtuelle Handel Mechanismus selbst in der "Hedge" Closing Block :

 

Als Nächstes wird der Mechanismus der virtuellen Transaktion selbst im Block "Hedge Closing" durchgeführt:

Der Abschluss und die Berechnung des Gesamtgewinns sind hier wohl von zentraler Bedeutung!

if ( Symbol()== Symbol_1 ){//если прогоняем  1-го инструмент
//--------------Закрываем первый хедж -----------------------------------
//задаем и вычисляем номер бара открытия реальной селл 1-го 
//инструмента - с магиком 1
int N_of_barOP_SELL_1 = NumberOfBarOpenLastPos( Symbol_1,0,OP_SELL, Magic);
//задаем цену открытия этого бара на 2-м инстр., равную  цене открытия 
//виртуальной поз.BUY на втором иструменте(магик)
double OpenBUY_Symbol_2=iOpen( Symbol_2,Period(), N_of_barOP_SELL_1);


if (    ( ( PriceOpenLastPos( Symbol_1,OP_SELL, Magic)- Close_Symbol_1) +
        ( Close_Symbol_2- OpenBUY_Symbol_2) )  >=  CloseProfit* POINT_1 ){
 //если суммарный профит реальной сделки селл 1-го
// инструмента и "виртуальный" профит сделки Бай 2-го
// инструмента (хеджа TradeUP) по факту больше заданного
//значения, то - закрываем реальную OP_SELL 1-го символа и
// виртуальную OP_BUY второго символа
        ClosePosFirstProfit( Symbol_1,OP_SELL, Magic);
        if (IsTesting() != True){// при тестировании команду не выполняем ! 
        ClosePosFirstProfit( Symbol_2, OP_BUY, Magic);
                                  }
                         }
//------------ Закрываем второй хедж -------------------------------------
      аналогично
//----------------------------------------------                          
                         }//if ( Symbol()== Symbol_1 ){

Das ist alles, was es zu sagen gibt...

Auf die gleiche Weise schließen wir das zweite Instrument in einem Testlauf(if ( Symbol()== Symbol_2 )

Verwendet von Igor Kim(Hut ab vor ihm):

OpenPosition(); - Öffnen einer Pose.

ModifyOrder(); - Änderung der Positionen.

NumberOfPositions() - Anzahl der Positionen

PriceOpenLastPos() - Eröffnungskurs der letzten Position

ClosePosFirstProfit() - Schließen von Positionen

NumberOfBarOpenLastPos() - gibt die Nummer des Balkens der zuletzt geöffneten Position zurück