Meta Trader'da spread ticareti - sayfa 78

 
ve bana öyle geliyor ki para birimleri en iyi seçenek değil, maksimum audi ve kivi
 

Burada neoklasik kodu kullanarak her iki enstrüman için dinamik lot hesaplama işlevini anladım.

Danışmanlarda kullanmak için. Kontrol et, tamam mı?

Risk parametresi, risk aldığımız yüzdedir.

Seçenekler:

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

kod:

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);
}

 

Eklendi. Sayesinde!

İyi çalışıyor gibi görünüyor!


 
rid >> :

Eklendi. Sayesinde!

İyi çalışıyor gibi görünüyor!

Evet... Parti boyutunu enstrüman adım parti ile normalleştirmek gerekiyor... Aksi halde 0.1831 partisi doğru değil... Şu anda...

 
Jahspear >> :

Evet... Parti boyutunu enstrüman adım parti ile normalleştirmek gerekiyor... Aksi halde 0.1831 partisi doğru değil... Şu anda...

Bu blok bu şekilde yapılmalı ve lot sayısı doğru olacaktır.

//приведение размера лотов 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); //больший по соотношению нормализуем
}

 
programlama ile arkadaş olan herkese bir rica. aşağıda bir uzman kar takip ediyor. birisi bir blok ekleyebilir, böylece gerçek karı ticker ile takip edebilir ve yorumda gösterebilir. bir şey benim için çalışmıyor. şimdiden teşekkürler
Dosyalar:
archive.zip  5 kb
 
Jahspear >> :

Evet... Parti boyutunu enstrüman adım parti ile normalleştirmek gerekiyor... Aksi halde 0.1831 partisi doğru değil... Şu anda...

Herkese merhaba, uzun zamandır şubeyi takip ediyorum, lotların büyüklüğünü belirlemek için biraz farklı bir seçenek öneriyorum:

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

Ayrıca iyi bir yaklaşım. Sadece sen göstermedin - programlı olarak nasıl hesaplanır

(Mediana( symbol_1 ) ve Mediana(symbol_2).

Bu arada, algoritmanıza göre GCG0+UMH0 tandem lotları nasıl elde edilir?

 
rid >> :

Bu arada, algoritmanıza göre GCG0+UMH0 tandem lotları nasıl elde edilir?

ve yine de eski lotları senkronize etme yöntemim daha doğru

ayarlara baz lotu ve iki enstrümanı girin, komut dosyasını tabloya bırakın ve işiniz bitti...



Dosyalar:
lotsu-v2.ex4  3 kb
 

Düşünce İçin Gıda : Borsa Yatırım Fonları (ETF)

Görünüşe göre, bu fonla "acele etmek" ilginç olacak:

MKT VCTR RUSYA SBI