int CountOrder[6];// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.//===============================================================================int Order_Count_Calculate(string _Symbol,int _Magic,int _OP=-1){ArrayInitialize( Order_Count,0);for(int i =OrdersTotal()-1; i >=0; i--){if(!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))continue;if(OrderSymbol()!= _Symbol)continue;if(OrderMagicNumber()!= _Magic)continue;
Order_Count[OrderType()]++;}if(_OP>=0)return( Order_Count[_OP]);return(0);}
ここで、アドバイザーを書こうとしているのですが...。学び始めたばかりなのに...。テスターでエラー4062が 表示される(ERR_STRING_PARAMETER_EXPECTED -4062- parameterof type string is expected)
どこを直せばいいのかがわからない。誰かローカルに コードを見てくれませんか:)
externdouble Lots =0.9;//лотexterndouble StopLoss =70;externdouble DecreaseFactor =80;externdouble MaximumRisk =0.014;externdouble MaximumLots =100;//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double GetSizeLot()//оптимизация лотов{double Lot = Lots;int cycle;int prof =0;int orders = HistoryTotal();// history orders totalint losses =0;// number of losses orders without a breakint vinn =0;int i = orders;//---- select lot size
Lot =NormalizeDouble(AccountFreeMargin()* MaximumRisk /100,1);//----if(AccountFreeMargin()<=14)
DecreaseFactor =14;//----if(AccountFreeMargin()>10000)
DecreaseFactor =60;//----if( DecreaseFactor >0&& orders > DecreaseFactor){//----for( cycle =1; cycle < DecreaseFactor; cycle++){
i--;//----if(OrderSelect( i, SELECT_BY_TICKET, MODE_HISTORY)==false){Print("Error in history!");break;}//----if(OrderCloseTime()>0){
prof = prof +OrderProfit();if(OrderProfit()<=0)
losses++;else
vinn++;}}if( prof <=0&& losses > vinn)
Lot =0.1;if( prof <=0&& vinn > losses)
Lot = Lot -(0.1* losses);if( prof >0&& losses > vinn){
Lot = Lot +(0.1*NormalizeDouble( vinn /4,0.1));}if( prof >0&& losses <= vinn ){
Lot = Lot +(0.1*NormalizeDouble( vinn /2,0.1));}}if(AccountFreeMargin()<300|| Lot <0.1)
Lot =0.1;if( Lot*1275>=AccountFreeMargin())
Lot =NormalizeDouble(AccountFreeMargin()* MaximumRisk /100,1);if( MaximumLots !=0&& Lot > MaximumLots)
Lot = MaximumLots;if( DecreaseFactor > orders)
Lot = Lots;return( Lot);}//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+ int start(){double glav1, sig1, glav2, sig2;int cnt, ticket, total;
glav1 =iCustom(NULL,0,"i_Trend",0,1);
sig1 =iCustom(NULL,0,"i_Trend",1,1);
glav2 =iCustom(NULL,0,"i_Trend",0,2);
sig2 =iCustom(NULL,0,"i_Trend",1,2);
total =OrdersTotal();// проверяем есть ли открытые позицииif( total <1){if(AccountFreeMargin()<(500* Lots))// проверяем денежки на счету{Print("Денег почти нет, осталось всего: ",AccountFreeMargin());return(0);}}// проверяем открытие позиции на покупкуif(( glav2< sig2)&&( glav1> sig1)){OrderSend(Symbol(),OP_BUY, GetSizeLot(),Ask,3,Ask- StopLoss*Point,"AlanMod expert",16384,0,Green);return(0);}// проверяем возможность открытия на продажуif(( glav2> sig2)&&( glav1< sig1)){OrderSend(Symbol(),OP_SELL, GetSizeLot(),Bid,3,Bid+ StopLoss*Point,"AlanMod expert",16384,0,Red);return(0);}for( cnt =0; cnt < total; cnt++){OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&// проверка открытой позиции OrderSymbol()==Symbol())// проверка с нашего ли она графика{if(OrderType()==OP_BUY)// если открыта позиция на покупку{if( glav1< sig1)// проверяем закрывать или нет?{OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);// закрылиreturn(0);// сваливаем}}else// если эта позиция на продажу{if( glav1> sig1)//проверяем закрывать иль нет?{OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);// закрылиreturn(0);// сваливаем}}}}}
ページが見つかりません。
こちらも見つかりませんでした。そんなことはどうでもいいんです。
オープニングプライスで仕事をするのであれば、新バーオープンの時にチェックすれば十分です。
それくらいがちょうどいい。また、他の価格でも開封が可能であれば。他の仕組みを使うべきでしょう。
1つのシンボルと時間枠で1つのポジションしか建てられない場合、オープンポジションの数を制御する必要があります。
さて、必要な配列要素の値を確認することで、このタイプのポジションがいくつ開いているかがわかります。
例えば(買いの逆指値の設定例).
(注文を出すために、設定した価格が気配値である必要はまったくありません。
現在の価格でも、CURRENT PRICE TO THE STOP PRICEからストップ・レベルを守る限り、どのような価格でもOKです)
('EURUSD - Trends, Forecast & Consequences')
の代わりに
double priceBUY=... ....
計算式を入力する
EH...特に添付のコード、本当にありがとうございました!まさにドクターの指示通り!))))
こちらも見つかりませんでした。そんなことはどうでもいいんです。
オープニングプライスで仕事をするのであれば、新バーオープンの時にチェックすれば十分です。
それくらいがちょうどいい。また、他の価格でも開封が可能であれば。他の仕組みを使うべきでしょう。
1つのシンボルと時間枠で1つのポジションしか建てられない場合、オープンポジションの数を制御する必要があります。
さて、必要な配列要素の値を確認することで、このタイプのポジションがいくつ開いているかがわかります。
私はコードにこれを持つが、私はこの配列を理解していない、それはどのようにこのバーで注文があり、それが閉じていた場合、我々は新しいバーを 待つことになります検出されるのでしょうか?
どう説明すればいいのか、言い間違いや機能の誤解があるかもしれない......。
1) ゼロバーで注文を出し、それがすでに決済されている場合、このバーですでに取引があり、それがすでに決済されているので、シグナルがあっても、このバーで別の注文を出すことはない。
各バーでは、このバーでの取引があった場合、1つだけの取引を開くことが許可されている、我々は注文を開くことはありません、どのように行うには?
人を助ける......)))I'm already having a meltdown \ \?
私のコードにこれがありますが、このバーに注文があり、それが閉じて、我々は新しいバーを待つ必要があることを検出する方法を理解していないのですか?
どう説明すればいいのか、言い間違いや機能の誤解があるかもしれない......。
1) ゼロバーで注文を出し、それがすでに決済されている場合、このバーですでに取引があり、それがすでに決済されているため、シグナルが出ていてもこのバーで別の注文を出すことはせず、次のバーを待つだけである。
各バーでは、このバーでの取引があった場合、1つだけの取引を開くことが許可されている、我々は注文を開くことはありません、どのように行うには?
人を助ける......)))I'm already having a meltdown \ \?
Igor KIMさんのスレッド「KimIVの便利な機能」をチェックしてみてください。いずれかの機能でお答えします
ここで、アドバイザーを書こうとしているのですが...。学び始めたばかりなのに...。テスターでエラー4062が 表示される(ERR_STRING_PARAMETER_EXPECTED -4062- parameterof type string is expected)
どこを直せばいいのかがわからない。誰かローカルに コードを見てくれませんか:)
ここで、アドバイザーを書こうとしているのですが...。学び始めたばかりなのに...。テスターでエラー4062が 表示されました(ERR_STRING_PARAMETER_EXPECTED -4062- expected parameter of type string)
どこを直せばいいのかがわからない。どなたか地元の 方がコードに目を通してくださいますように:)
1) doubleNormalizeDouble( double value, int digits) とすると、(vinn/2, 0.1) となる。
2)OrderSend(Symbol( ), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point,NO TAKE_profit, "AlanMod expert", 16384, 0, Green) を実行。
カスタムインジケータの バッファの名前はどうすればいいですか?