Spread trading dans Meta Trader - page 78

 
et je ne pense pas que les devises soient la meilleure option, max audi et kiwi
[Deleted]  

Voici la fonction de calcul du lot dynamique pour les deux instruments, en utilisant le code néoclassique.

A utiliser dans les EAs. Vérifiez-le, c'est bon ?

Le paramètre Risque est le pourcentage que nous risquons.

Paramètres :

extern string Symbol_1 = "6EM0";
extern string Symbol_2 = "6SM0";
extern double Risk = 10;
string lotsinfo;
double Lots_1; double Lots_2;

Code :

void CountLots()
{

//расчет соотношения лотов по инструментам

double ynax=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKVALUE)*
(iOpen(Symbol_1,0,0)/MarketInfo(Symbol_1, MODE_TICKSIZE))/(iOpen(Symbol_2,0,0)/MarketInfo(Symbol_2, MODE_TICKSIZE));

double minx=0, miny=0, mindelta=9999;

for (double x=0.01; x<=1; x+=0.01)
{
for (double y=0.01; y<=1; y+=0.01)
{
double delta=MathAbs(y/x-ynax);
if (delta<mindelta)
{
minx=x;
miny=y;
mindelta=delta;
}
}
}
double LotsS1=minx;
double LotsS2=miny;

//расчет динамического лота с заданным параметром Risk

string Symb1=Symbol_1;
string Symb2=Symbol_2;
double Min_Lot1=MarketInfo(Symb1,MODE_MINLOT);// Мин. размер лота
double Min_Lot2=MarketInfo(Symb2,MODE_MINLOT);// Мин. размер лота
double Step1 =MarketInfo(Symb1,MODE_LOTSTEP);//Шаг изменен лотов
double Step2 =MarketInfo(Symb2,MODE_LOTSTEP);//Шаг изменен лотов
double Free =AccountFreeMargin(); // Свободн средства
double One_Lot1=MarketInfo(Symb1,MODE_MARGINREQUIRED);//Стоим.1 лота
double One_Lot2=MarketInfo(Symb2,MODE_MARGINREQUIRED);//Стоим.1 лота
double Lot1=MathFloor(Free*Risk/100/One_Lot1/Step1)*Step1;// Лоты
double Lot2=MathFloor(Free*Risk/100/One_Lot2/Step2)*Step2;// Лоты

//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2

if (LotsS1<=LotsS2)
{
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=Lot1/LotsS1*LotsS2; //больший по соотношению нормализуем
}
else
{
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=Lot2*LotsS1/LotsS2; //больший по соотношению нормализуем
}

//проверяем возможность торговать

if ((Lots_1<Min_Lot1)||(Lots_2<Min_Lot2))
string lotsalert=StringConcatenate("Нет средств для торговли с Risk=",Risk,"%.\n");
else lotsalert="";

//выводим информацию в строку

lotsinfo=StringConcatenate(lotsalert,
"Risk = ",Risk,"%. Лот ",Symbol_1," = ",Lots_1,", Лот ",Symbol_2," = ",Lots_2,".\n");

//Comment(lotsinfo);
}

 

Inséré. Merci !

Il semble que cela fonctionne bien !


[Deleted]  
rid >>:

Вставил. Благодарю!

Вроде нормально работает!

Aha... Nous devons normaliser la taille du lot avec les incréments de lot de l'instrument... Parce que le lot 0.1831 ne fonctionne pas... Bien...

[Deleted]  
Jahspear >>:

Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...

Ce bloc devrait être fait de cette façon, et le nombre de lots sera correct.

//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2

int Step;
if (LotsS1<=LotsS2)
{
Step = MathCeil(MathAbs(MathLog(Step2)/MathLog(10)));
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=NormalizeDouble((Lot1/LotsS1*LotsS2),Step); //больший по соотношению нормализуем
}
else
{
Step = MathCeil(MathAbs(MathLog(Step1)/MathLog(10)));
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=NormalizeDouble((Lot2*LotsS1/LotsS2),Step); //больший по соотношению нормализуем
}

 
Je voudrais demander à tout le monde qui est bon à la programmation.below expert, trawling profit.can someone insert a block to trawl the actual profit on tickers and display it in the comment.me that that does not work.thank you in advance
Dossiers :
archive.zip  5 kb
 
Jahspear >>:

Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...

Bonjour à tous, je suis depuis longtemps un observateur de la branche, pour le dimensionnement des lots, je suggère une option légèrement différente :

lot2 =
lot1 *
(MarketInfo( symbol_1, MODE_TICKVALUE) / MarketInfo( symbol_2, MODE_TICKVALUE)) *  // отношение размеров тиков в валюте депозита
( Mediana( symbol_1) / Mediana( symbol_2)) *  // отношение медиан движения инструментов
(MarketInfo( symbol_2, MODE_TICKSIZE) / MarketInfo( symbol_1, MODE_TICKSIZE)) *  // отношение размерности тиков
(MarketInfo( symbol_1, MODE_TICKSIZE) * MarketInfo( symbol_1, MODE_LOTSIZE)) /  // стоимость пункта 1-го инструмента
(MarketInfo( symbol_2, MODE_TICKSIZE) * MarketInfo( symbol_2, MODE_LOTSIZE)  // стоимость пункта 2-го инструмента

// Медиана - это среднее значение без экстремальных
// т.е. в данном случае суммируем (хай-лоу) дневных свечек за какое-то количество дней (например 30), отбрасываем пару самых больших и самых малых значений и усредняем.

// по DAX-FTSE кстати соотношение лотов получается примерно 1:2.8 :)
 

Ce n'est pas une mauvaise approche non plus. Seulement vous n'avez pas montré - comment calculer de façon programmatique

(Mediana(symbole_1) et Mediana(symbole_2).

Au fait, comment les lots en tandem GCG0+UMH0 seraient-ils calculés selon votre algorithme ?

[Supprimé]  
rid >>:

Кстати, как по вашему алгоритму получились бы лоты тандема GCG0+УMH0 ?

et pourtant mon ancienne méthode de synchronisation des lots est plus correcte

entrez le lot de base et deux instruments dans les paramètres, lancez le script sur le graphique et c'est fait...



Dossiers :
lotsu-v2.ex4  3 kb
 

Matière à réflexion : les fonds négociables en bourse (FNB)

Il pourrait être intéressant de mettre la main sur ce fonds :

VCTR MARCHÉ RUSSIE SBI