Operar con spreads en Meta Trader - página 31

 
neoclassic >>:

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


¡Es posible! No voy a discutir.

Así que seguiremos buscando. Buscando otras herramientas adecuadas.

Por cierto. Ayer cerca del final de la negociación en el índice Fduch entré (COMPRA ZC + VENTA ZW)

Ahora hay {+300 pips (maíz) -175 pips (trigo) }

 
neoclassic >>:

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


A continuación, calcule la fórmula del índice canadiense. Si existe, por supuesto ))) ... En realidad rid, es mejor tomar por supuesto el eur en "tándem". Como tiene más peso en el índice. Sólo hay que poner un signo menos en la fórmula del indy para su visualización normal. ¿Y puedes compartir cómo calculas el coeficiente del "tándem", es decir, el peso de los pares en el trato?

 

Todavía no he hecho ningún cálculo serio. Es decir, - hasta ahora a ojo, - aproximadamente.

Para (Dax/Futsi) - la relación de lotes 1,2/3 y delta no menos de 200 T, - he deducido como resultado de muchas semanas de observación.

EURIPY+USDJPY - Tomo los mismos tamaños de lote. Durante 2,5 semanas de trabajo en línea (delta = 20-30 pips) esta "cobertura" no ha pasado más de 2-3 días.

Lo cerré con un beneficio total de 5 a 20 pips.

 
¿"Vigilancia de varias semanas"? ¿No sería más fácil simplemente recopilar datos?
 

Es poco probable que funcione. " Crazy Dax"(c) y "pretty Footsie"(c) en la "versión discutida" se negocian en diferentes plataformas.

Futsi comienza una hora más tarde que Dax en el día. Además, hay bastantes días en la historia en los que el dax cotizaba y el futsi estaba "apagado", o viceversa. Por lo tanto, la historia de estos instrumentos se desplaza muchas veces en relación con los demás y, por esa razón, tiene poca credibilidad.

 
rid >>:

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

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

Eso está bien. Nunca jugaremos mejor que los tíos grandes en su campo. Y en un campo como éste, los tíos grandes no tienen nada que hacer.

Este es nuestro pan de cada día.

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

Estoy haciendo un EA de "cuasi arbitraje" que se puede ejecutar en el probador en ambos instrumentos de "cobertura" con operaciones virtuales simuladas en el segundo símbolo.

Hay una pregunta.

Por favor, avisa.

¿Cómo puedo cambiar su función?

//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  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);
}

¿Devolvería el diferencial medio no para las últimas NBars ?

Pero para los penúltimos NBars.

Es decir, para un periodo que va desde la(2*NBars)-ésima barra hasta la NBars?

Pregunta a todos los que puedan responder.

Porque estoy sentado aquí, no puedo entenderlo.

 
//--------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТ.СПРЕДА                    |
//--------------------------------------------------------------------+               
  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);
}
 

Gracias, Getch. Lo pondré en práctica ahora.

Resultó ser más fácil implementar las operaciones virtuales del segundo instrumento de cobertura en el probador de lo que pensé inicialmente.

Construí el trabajo por precios de apertura porque el probador no devuelve MarketInfo(Symbol_2,MODE_BID) Bids y Asks; pero los precios de apertura y cierre son devueltos por el probador normalmente.

Ahora lo pruebo con tf=m1 para mayor precisión

Para aquellos que estén interesados y lo necesiten, aquí hay fragmentos de nuestra solución de programa (rid+leonid553).

Apertura de cobertura de 1 tipo (es decir, vender1+por2) :

Estaré encantado de recibir comentarios críticos.

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) {         
//--------------------------------------------------                                                    
                                 } //если условия соответствуют заданным

A continuación, en realidad - el propio mecanismo de operaciones virtuales en el bloque de cierre de "cobertura" :

 

A continuación, el propio mecanismo de la transacción virtual en el bloque de cierre de la "cobertura":

¡El cierre y el cálculo del beneficio total es probablemente de importancia clave aquí!

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 ){

Eso es todo...

De la misma manera hacemos el cierre del segundo instrumento en una ejecución de prueba(si ( Símbolo()== Símbolo_2 )

Usado f-y Igor Kim(me quito el sombrero) :

OpenPosition(); - abrir una pose.

ModifyOrder(); - modificación de posiciones.

NumberOfPositions() - número de posiciones

PriceOpenLastPos() - precio de apertura de la última posición

ClosePosFirstProfit() - cierre de posiciones

NumberOfBarOpenLastPos() - devuelve el número de barra de la última posición abierta


Razón de la queja: