Так вот я вам самый простой код и выложил
который с 0 вместо 1 лота берет 3 ну а дальше как карты лягут
протестируйте его
#samewindow
#line 0 solid blue
#line 1 solid red
extern lot = 1; // Первоначальное количество лотов
extern "number" n0 = 26; // Период EMA
extern "number" n1 = 13; // Период EMA
var bal;
function calc()
{
line[0] = MovAvg(ind_ema, n0, pt_close);
line[1] = MovAvg(ind_ema, n1, pt_close);
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal<0) {
if(line[0][-1]<close[-1] and line[0][-2]>close[-2]){
trade_action::buy(lot, ::lots);}
}
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal == 0) {
if(line[0][-1]>close[-1] and line[0][-2]<close[-2]){
trade_action::sell(lot, ::lots);}
}
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal<0) {
if(line[1][-1]<close[-1] and line[1][-2]>close[-2]){
trade_action::buy(lot, ::lots);}
}
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal == 0) {
if(line[0][-1]<close[-1] and line[0][-2]>close[-2]){
trade_action::buy(lot, ::lots);}
}
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal>0) {
if(line[0][-1]>close[-1] and line[0][-2]<close[-2]){
trade_action::sell(lot, ::lots);}
}
bal = getBought() - getSold();
signal::output("Кол. контрактов = " + bal);
if (bal>0) {
if(line[1][-1]>close[-1] and line[1][-2]<close[-2]){
trade_action::sell(lot, ::lots);}
}
}