Spread-Handel in Meta Trader - Seite 78

 
und ich glaube nicht, dass Währungen die beste Option sind, max audi und kiwi
 

Hier ist die dynamische Losberechnungsfunktion für beide Instrumente unter Verwendung des neoklassischen Codes.

Zur Verwendung in EAs. Prüfen Sie es, ist es in Ordnung?

Der Parameter Risiko ist der Prozentsatz, den wir riskieren.

Parameter:

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

 

Eingefügt. Ich danke Ihnen!

Es scheint gut zu funktionieren!


 
rid >>:

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

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

Aha... Wir sollten die Losgröße mit den Los-Inkrementen des Instruments normalisieren... Weil das Los 0.1831 nicht funktioniert... Genau...

 
Jahspear >>:

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

Dieser Block sollte auf diese Weise erstellt werden, und die Anzahl der Lose wird korrekt sein.

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

 
Ich möchte alle fragen, die gut in der Programmierung ist.unten Experte, trawling profit.can jemand einen Block einfügen, um den tatsächlichen Gewinn auf tickers trawl und zeigen es in der comment.me, dass das nicht funktioniert.thank you im Voraus
Dateien:
archive.zip  5 kb
 
Jahspear >>:

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

Hallo zusammen, ich beobachte die Branche schon lange und schlage für die Losgrößenbestimmung eine etwas andere Option vor:

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

Auch das ist kein schlechter Ansatz. Nur haben Sie nicht gezeigt, wie man programmatisch berechnet

(Mediana(symbol_1) und Mediana(symbol_2).

Übrigens, wie würden die Tandempartien GCG0+UMH0 nach Ihrem Algorithmus berechnet?

 
rid >>:

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

und dennoch ist meine alte Methode der Los-Synchronisation korrekter

Geben Sie das Basislot und zwei Instrumente in die Einstellungen ein, legen Sie das Skript auf dem Chart ab und fertig...



Dateien:
lotsu-v2.ex4  3 kb
 

Denkanstöße: Börsengehandelte Fonds (ETFs)

Es könnte interessant sein, sich an diesem Fonds zu beteiligen:

MKT VCTR RUSSLAND SBI