//это выражение не имеет смысла, if здесь лишнийif MAF_0 - MAF_1= A
if MAS_0 - MAS_1= B
//если требовалось определить разницу значений МА на 1-ом и нулевом баре, то можно такdouble A = MAF_0 - MAF_1;double B = MAS_0 - MAS_1;
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжexternint EMA1 =14;// Период 1-й EМАexternint EMA2 =48;// Период 2-й EМАexternint EMA3 =144;// Период 3-й EМА externint period=12;externint porog =3;externint metod =1;externint metod2=1;externint prise =0;externdouble SL =1000;// СтопЛосс ордераexterndouble TP =500;// ТэйкПрофит ордераexterndouble Lots=0.1;//--------------------------------------------------------------------------------------------int
New_Bar,// 0/1 Факт образования нового бара
Time_0,// Время начала нового бара
total;// Крличество открытых ордеров//--------------------------------------------------------------------------------------------double
Lot,// Количество лотов
Norm,// Предыдущее значение 1-й МА (розов)
Fast,// Текущее значение 1-й МА (розов)
Slow,// Текущее значение 2-й МА(голубая)
Signal[];//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжint init(){//============================================================================================
SL = SL*Point;// SL в пунктах
TP = TP*Point;// ТР в пунктахreturn;//============================================================================================}//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжint start(){//============================================================================================
total=OrdersTotal();// Общее количество ордеровif( total==2)return;// Уже открыты оба ордера//----------------------------------------------------------------------------- Новый бар ----
New_Bar=0;// Для начала обнулимсяif( Time_0 !=Time[0])// Если уже другое время начала бара{
New_Bar=1;// А вот и новый бар
Time_0 =Time[0];// Запомним время начала нового бара}//--------------------------------------------------------------------------------------------//---расчет тренда ввех или вниз (XMA)int limit;double tmp1, tmp2;int counted_bars=IndicatorCounted();int i;if( counted_bars<0)return(-1);if( counted_bars>0) counted_bars--;
limit=Bars- counted_bars;for( i = limit; i>=0; i--){
tmp1=iMA(Symbol(),0, period,0, metod, prise, i);
tmp2=iMA(Symbol(),0, period,1, metod2, prise, i);if(MathAbs( tmp1- tmp2)>= porog*Point){ Signal[ i]= tmp2;}//--------------------------------------------------------------------------------------------
Fast =iMA(NULL,0, EMA1,0,MODE_EMA,PRICE_CLOSE,0);// Текущее значение 1-й EМА
Norm =iMA(NULL,0, EMA2,0,MODE_EMA,PRICE_CLOSE,0);// Предыдущее значение 2-й EМА
Slow=iMA(NULL,0, EMA3,0,MODE_EMA,PRICE_CLOSE,0);// Текущее значение 3-й EМА//--------------------------------------------------------------------------------------------if( Fast> Norm && Norm> Slow && New_Bar==1&&Close[ i]> Signal[ i]) Open_Buy();// Движение снизу вверх = откр. Buyif( Fast< Norm && Norm< Slow && New_Bar==1&&Close[ i]< Signal[ i]) Open_Sell();// Движение сверху вниз = откр. Sell}return;//============================================================================================}//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжint Open_Buy(){if( total==1){OrderSelect(0, SELECT_BY_POS);// Выделим ордерif(OrderType()==0)return;// Если он buy, то не открываемся}OrderSend(Symbol(),0, Lots,Ask,0,Ask- SL,Ask+ TP,"",0,0,Blue);// Открываемсяreturn;}//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжint Open_Sell(){if( total==1){OrderSelect(0, SELECT_BY_POS);// Выделим ордерif(OrderType()==1)return;// Если он sell, то не открываемся}OrderSend(Symbol(),1, Lots,Bid,0,Bid+ SL,Bid- TP,"",0,0,Red);// Открываемсяreturn;}
こんにちは。
SimpleMAのエキスパートがいるのですが、それをちょっとだけ、自分用にいじったのがMASimple_v2xというものです(・・;)
そして、改善しようとしたのですが、しかし、しかし。
実験後にエラーが発生しました。
何が悪かったんだろう.........................................?
>> よろしくお願いします。
この方法で試してみてください。
の代わりに - if MAF_0 - MAF_1= A
if MAS_0 - MAS_1= B
this - double A = MAF_0 - MAF_1;
double B = MAS_0 - MAS_1;
私の理解が正しければ、両方のMAが同じ方向に動いている状況を追跡しているのですね。まだまだ面白い発見が待っていますよ :))
成行注文のロット数を新規に開くことなく増やすことが可能かどうか、教えてください。
私の知る限りではありません!新しいロットを開いたときのみ。取引後にロットを増やす意味とは?それとも、正しい方向に開いていく様子を見て、もっともっとお金が欲しいということでしょうか?
И что теперь с этим делать?
たぶん、もっといい(汎用性がある)。
コンパイル時にエラーは出ないが、計算やトランザクションがうまくいかない( ここにいるプロの方、よろしくお願いします。
皆さん、こんにちは!一言お願いします!!!いくつか質問があるが、自分ではできない。
1.1つのバーで1つの注文だけをオープンさせる方法は?
2.いくつかの売買条件がありますが、これにはどのような関数を使用すればよいのでしょうか?
3.Breakevenへのオープンポジションの 移管を整理する方法は?
4.EAのコードで3つの条件をすべて適用する方法(可能であれば、例付き)?
回答が楽しみです。ありがとうございました。
こんにちは。たまたま、興味のあるテーマの 記事に 出会いました。すなわち、これです。窓の大きさを選ぶ ....最適な結果を得ることができる
の場合、データのフラクタル次元のオーダーのウィンドウサイズを選択する。これを計算するためには、十分に大きなサイズのスライディングウィンドウで系列を「スライス」する必要があります。
(図5参照) を行い、得られたデータのフラクタル次元をBox-count法などで計算する...。
このスライディングウィンドウの大きさをどのように計算すればよいか、(できればもっとシンプルに)教えてください。せめて、どこを見ればいいのか。
著者の連絡先はウェブサイトに掲載されているので、原典を参照することをお勧めします。作品万歳!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
maniacさん、granit77さん、ありがとうございました。
最近の逸話です。コンピュータサイエンスの先生が担当する、コンピュータラボでの文学の授業。
-ゲラシムは、この......ニュ......アで、サウンドカードを持っていなかった :-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))。
さて、エキスパートについては、取引条件を短くしてみました。知覚をよくするためにね。
つまり、数学的な計算が ある場合は、doubleで呼び出す方が良い。
皆さん、こんにちは!一言お願いします!!!いくつか質問があるが、自分ではできない。
1.1つのバーで1つの注文だけをオープンさせる方法は?
....... ...
回答お待ちしています。ありがとうございました。
https://www.mql5.com/ru/forum/102366
//-----------------
https://www.mql5.com/ru/forum/113983/page2
//-------------
https://www.mql5.com/ru/forum/110184
コンパイル時にエラーは出ないが、計算とトレードがうまくいかない( ここにいるプロに感謝します。
あなたのコードで最初に目に留まり、確信が持てないのは、Expert Advisorで IndicatorCounted()関数を使用することの正しさです。確認はしていませんが、カスタムインジケータに限っては その正しさが保証されていると思います。