Советник Profit Generator - страница 13

 
jojolalpin:
Мне не нравится иметь ордера без SL или без TP, а при использовании superclose() нет TP, пока не активирован трейлинг. Поэтому я спрашиваю, почему бы не установить начальный тейкпрофит (до того, как superclose установит его), чтобы подстраховаться на случай компьютерного сбоя. Поэтому я и предложил двукратное значение переменной takeprofit.

Также для инициирования на тестовом плане, параметры следующие:

Стоплосс: 10 до 30?

Тейкпрофит: от 20 до 100?

Таймфреймы: M1 M15 H4 Daily Weekly...

Валюты: 12 из выбора Holyguy7? Только те, у которых небольшой спред (<=5)?

Это всего лишь предложения.

Хорошо, теперь я понимаю, что вы имеете в виду. Это довольно легко сделать. Я использую выделенный сервер со 100% временем работы, поэтому я не думаю о таких вещах.

А вот некоторые замечания по поводу superclose(). Я надеялся, что у меня будет возможность отслеживать цены TS по номеру тикета, чтобы можно было установить MaxTrades больше 1 и иметь возможность отследить менее 10 пунктов.

void SuperClose(){

for(int i=0;i<OrdersTotal();i++){

if(OrderSelect(i,SELECT_BY_POS)){

if(OrderSymbol()==Symbol() && OrderMagicNumber()==ID){//Pulls in order that meets the criteria for processing

int num=0;int pos=0;

for(int b=0;b<21;b++){// this (loopB) compares the ticket# of the selected order against the number stored in the ticket array

if(tsTicket==OrderTicket() ){

num++; pos=b;// if ticket numbers match, pos is the position in the array where the trailing data is stored

Print("(",pos,") Ticket ",tsTicket[pos]," found. SL is ",tsPrice[pos]);

break;

}

}

if(num==0){ // if the loopB did not find a matching ticket number it is time to initialize the data

for(int j=0;j<21;j++){

if(tsTicket[j]==0){// this is looking for the earliest instance within the array to store the data

pos=j;

break;

}

}

tsTicket[pos]=OrderTicket();// setting the ticket number

tsok[pos]=false;// this is to determine when trailing kicks in

Print("(",pos,") New ticket initialized = ",tsTicket[pos]);

}

if (OrderType()==OP_SELL) {

if (!tsok[pos] && (OrderOpenPrice()-Ask>=TSactivation*Point || TSactivation==0 ) ) {// if the trailing factor is false, but it has hit the activation point continue

tsPrice[pos]=Ask+TrailPips*Point;// this is the new trailinf stop price

tsok[pos]=true;// it's ok to proceed with trailing stop

if(TrailPips>8){// if this distance from the current price to the new stop, then modify the order.

ModifyStopLoss(Ask+TrailPips*Point);//modifies order

}

}

if (tsok[pos] && Ask+TrailPips*Point < tsPrice[pos] ){//if the position is gaining in profit

tsPrice[pos]=Ask+TrailPips*Point;

if(TrailPips>8){

ModifyStopLoss(Ask+TrailPips*Point);

}

}

if (tsok[pos] && Ask >= tsPrice[pos] ){// if the postion hits the stop price

CloseOrder(2);

Print("Order ",tsTicket[pos]," Closed from TS");

}

}

if (OrderType()==OP_BUY) {// reverse of SELL

if(!tsok[pos] && (Bid-OrderOpenPrice() >= TSactivation*Point || TSactivation==0 ) ) {

tsPrice[pos]=Bid-TrailPips*Point;

tsok[pos]=true;

if(TrailPips>8){

ModifyStopLoss(Bid-TrailPips*Point);

}

}

if (tsok[pos] && Bid-TrailPips*Point > tsPrice[pos] ){

tsPrice[pos]=Bid-TrailPips*Point;

if(TrailPips > 8){

ModifyStopLoss(Bid-TrailPips*Point);

}

}

if (tsok[pos] && Bid <= tsPrice[pos] ){

CloseOrder(1);

Print("Order ",tsTicket[pos]," Closed from TS");

} } } } }

for(i=0;i<21;i++){// this searches the array for ticket numbers that are now obsolete due to an order that has closed

if(tsTicket>0){

bool found=false;

for(b=0;b<OrdersTotal();b++){

OrderSelect(b,SELECT_BY_POS);

if(tsTicket==OrderTicket()){

found=true;

break;

}

}

if(!found){// if there are matching ticket numbers in the trade pool and the array then nothing happens

tsTicket=0;tsPrice=0;tsok=false;// if there is an obolete ticket the the data is reset. And the next new ticket data can occupy this space

Print("Array pos ",i," Cleaned");

} } } }
 
 

Вот советник с изменением TP после того, как UseClose станет true. Он удвоит TP в целях безопасности. Спасибо Джо!

Файлы:
 
dazminder:
Я надеялся протестировать Profit Generator 2.4. Он не разместил ни одной сделки с 630GMT..... размещал ли он другие сделки для кого-либо. TF15 $/CHT, £/$, Euro/$... Пожалуйста, дайте мне знать, так как я думаю, что это хороший советник в принципе.

Вы получите меньше сделок, потому что первый критерий заключается в том, что текущий бар должен быть больше, чем значение LongBar по длине. Я бы рекомендовал использовать свечу меньшего размера на нижнем ТФ.

 
jojolalpin:
Хорошо, но как новичок я подожду, пока кто-нибудь более опытный даст высокие и низкие пределы для различных параметров.

Я сейчас тестирую 2.4 на пресетах от Holyguy7 и с 1:00 утра я сделал только 3 сделки (1:10 sell usdcad на дневном BAD; 7:29 и 14:29 gbpusd на H1 первая 28 пунктов, а вторая фактически лузер). Это кажется нормальным, у кого-нибудь есть такие же результаты?

Также, чтобы позволить тестирование на нескольких таймфреймах, я изменил три строки в версии 2.6:

1 -

extern int ID;

становится

extern int ID_BASE=100000; чтобы дать номер PG_2.6 (здесь 1).

2 - я добавил следующую строку сразу под "int Bar;".

int ID;

3 - Я добавил функцию init()

int init(){

ID=ID_BASE+Period(); return(0);

}

Таким образом, на дневном графике magicnumber будет равен 101440 и будет отображаться в комментарии к сделке. Так будет проще анализировать результаты для каждого таймфрейма и вида параметров. Я еще не тестировал это, но это должно работать.

И для конкретного графика у вас будет фиксированный ID, а не случайное число.

Также, возможно, мы могли бы добавить начальный тейкпрофит, используя функцию superclose. Просто на случай сбоя компьютера.

PS: я внесла другие изменения, которые я должна удалить перед публикацией. скажите мне, если интересно.

Отличная идея! Единственное, что нужно иметь в виду, это если вы собираетесь проводить разные тесты на одной паре и TF для изменения Base ID. Я добавил эти изменения, но сделал одно небольшое изменение. ...поскольку Период может меняться от переменной "период" (отличной от графика), я сделал так:ID=ID_BASE+P(); return(0);

P() возвращает фактический период, используемый программой. Отличная идея... с какими еще изменениями вы играли?

Вот 2.6.2.

 

ничего больше с момента последнего сообщения об этом (gbpusd все еще проигрывает), но я работаю на H1 и дневном и держу longbar=15.

Давайте подождем этой ночи (в целом для пар jpy).

 

Кто-нибудь может предложить мне параметры тестирования (SL и TP)?

Я буду использовать безчасовой лимит на основных валютах и M1, M5, M15, H1 и H4.

 
jojolalpin:
С момента последнего сообщения об этом (gbpusd все еще проигрывает) больше ничего, но я работаю на H1 и на дневном и сохранил longbar=15. давайте подождем этой ночи (в целом для пар jpy).

Я заметил, что GBPUSD лучше работает на дневном графике:

TP: 40

SL: 30

Без таймфильтра

Лонгбар: 10

Просто кажется более надежным. EURUSD и USDCHF, кажется, лучше работают на графике H1 с лонгбаром на 15 и включенным таймфильтром.

Сейчас я испытываю трудности, так как основные валютные пары не дают мне покоя с этим советником. Кто-нибудь добился успеха на основных валютных парах? Если да, пожалуйста, опубликуйте свои результаты.

 

Привет

HolyGUY,

Каков сегодня прогресс в работе над этим новым советником

 
kumawat:
Привет

HolyGUY,

Каков прогресс сегодня в работе над этим новым советником?

Со вчерашнего дня произошел некоторый откат по некоторым основным валютным парам. Тем не менее, за неделю мы выросли более чем на 20%, и в настоящее время в системе нет открытых сделок.

Я опубликую свои результаты через несколько часов. Я использовал GBPUSD на таймфрейме H1, но считаю, что она более надежна на таймфрейме D1, как и другие. Я буду держать вас в курсе.

Причина обращения: