Оставлю оригинальный текст на русском, тк возможны искажения при переводе(
У этого индикатора есть некоторые проблемы при использовании и 4 значных котировок.Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней,можно ли как нить поменять масштаб до уровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текущее значение?Еще не могу понять почему появляються черные гистограмы поверх при увеличении (
void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr) { ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0); ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol); ObjectSetInteger(0,name,OBJPROP_CORNER,corner); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(0, name, OBJPROP_COLOR, clr); ObjectSetInteger(0,name,OBJPROP_WIDTH,width); ChartRedraw(0); }
void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr) { ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0); ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol); ObjectSetInteger(0,name,OBJPROP_CORNER,corner); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(0, name, OBJPROP_COLOR, clr); ObjectSetInteger(0,name,OBJPROP_WIDTH,width); ChartRedraw(0); }
このインジケータでは、4桁の引用符を使用するときにいくつかの問題があります。しかし、それは重要ではありませんが、問題は100のレベルに4桁のスケールで、写真を表示しようとすると、適切な時期を見て、非常に目を緊張している(数日後、40のレベルにスケールを変更するスレッドとしてどうか - それは現在の値を示すであろうテキストの右隅にヒストグラムと見られる方が良いですか?
Оставлю оригинальный текст на русском, тк возможны искажения при переводе(
У этого индикатора есть некоторые проблемы при использовании и 4 значных котировок.Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней,можно ли как нить поменять масштаб до уровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текущее значение?Еще не могу понять почему появляються черные гистограмы поверх при увеличении (
ムラデンです。
私はMT5を使用しています。
この「シンプルなトレーリング機能」を「ステップ付きトレーリング」に変換する必要があるのですが、ヒントをいただけないでしょうか?
EAの中で私は持っています
入力 "Trailing" (by points)
=>例
トレーリング: 4000 (4ポイント)
(旧方式) 価格が4ポイント動いたらストップロスを4ポイント動かす
というように修正する必要があります。
===================
input "トレーリング(距離)(ポイント)"
input "トレーリング(ステップ)(ポイント)"
=>例
トレーリング距離:4000 (4ポイント)
トレーリングステップ:1500 (1,5ポイント)
(新しい方法) 価格が4ポイント動いたら、ストップロスを1,5ポイント動かす。
//| Simple Trailing function |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
if(Trailing<=0){
return;
}
if(!Pos.Select(_Symbol)){
return;
}
if(!Sym.RefreshRates()){
return;
}
double nsl,tmsl,psl;
switch(Pos.PositionType()){
case POSITION_TYPE_BUY:
nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
if(nsl<tmsl){
Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
}
}
}
break;
case POSITION_TYPE_SELL:
nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
psl=Sym.NormalizePrice(Pos.StopLoss());
if(nsl<psl || psl==0){
tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
if(nsl>tmsl){
Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
}
}
}
break;
}
}
それはリペイントではありませんか?
ムラデンです。
私はMT5を使用しています。
この「シンプルなトレーリング機能」を「ステップ付きトレーリング」に変換する必要があるのですが、ヒントをいただけないでしょうか?
EAの中で私は持っています
入力 "Trailing" (by points)
=>例
トレーリング: 4000 (4ポイント)
(旧方式) 価格が4ポイント動いたらストップロスを4ポイント動かす
というように修正する必要があります。
===================
input "トレーリング(距離)(ポイント)"
input "トレーリング(ステップ)(ポイント)"
=>例
トレーリング距離:4000 (4ポイント)
トレーリングステップ:1500 (1,5ポイント)
(新しい方法) 価格が4ポイント動いたら、ストップロスを1,5ポイント動かす。
//| Simple Trailing function |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
if(Trailing<=0){
return;
}
if(!Pos.Select(_Symbol)){
return;
}
if(!Sym.RefreshRates()){
return;
}
double nsl,tmsl,psl;
switch(Pos.PositionType()){
case POSITION_TYPE_BUY:
nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
if(nsl<tmsl){
Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
}
}
}
break;
case POSITION_TYPE_SELL:
nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
psl=Sym.NormalizePrice(Pos.StopLoss());
if(nsl<psl || psl==0){
tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
if(nsl>tmsl){
Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
}
}
}
break;
}
}
もし価格が次のように動いたら:何?
この関数を 呼び出す前に
もし価格が "成長 "していたら、"距離 "をポイント単位で確認する。もし "距離 "と一致したら、ストップロスをステップ(ポイント単位)で動かす。
例
ストップロス=8000
トレーリング距離 = 4000
トレーリングステップ = 2000
価格10000で購入した場合
現在、価格は14000(目標到達距離=4000)、ストップロスを6000(8000 - トレーリングステップ)に移動させる必要があります。
今価格は18000(目標到達距離=4000)、ストップロスを2000(6000-ステップ)に移動する必要があります。
現在、価格は22000(目標到達距離=4000)、ストップロスを「入口」+2000(2000 - トレーリングステップ=2000)に移動させる必要があります。
現在価格は24000(トレーリング距離目標=4000)、ストップロスを「入口」+6000(-2000 - トレーリングステップ=6000)に移動する必要があります。
この関数を呼び出す前に
もし価格が "成長 "していたら、"距離 "をポイント単位で確認する。もし "距離 "と一致したら、ストップロスをステップ(ポイント単位)で動かす。
例
ストップロス =8000
トレーリング距離 = 4000
トレーリングステップ = 2000
価格10000で購入した場合
現在価格は14000(目標到達距離=4000)、ストップロスを6000(8000 - トレーリングステップ)
現在価格は18000(目標到達距離=4000)、ストップロスを2000(6000 - トレーリングステップ)
現在価格は22000(目標到達距離=4000)、ストップロスを「入り口」+2000(2000 - トレーリングステップ =2000)に移動する必要があります。
現在価格が24000(目標到達距離4000)、ストップロスを「入口」+6000(-2000-トレーリングステップ=-6000)に移動させる必要があります。
こんにちは。
矢印を描く関数を 書きたいと思います。 矢印は浮いて いるようにしたいです。何かいいアイデアありませんか?)
void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
ChartRedraw(0);
}
はい、しかし、もしあなたがそれを記録していないなら(通常、ストップロスやテイクプロフィットの価格の場合、それらが変更されると、別の変更の基準となり始めます)、あなたは変数でそれを持つことを余儀なくされ、それはエラープルーフ以外の何物でもありません。あなたがやろうとしていることは、コードでは再現できませんし、それぞれのケースでストップをハードコードする必要があります。
mladenさん、こんにちは。
これがサンプルeaです。
こんにちは。
矢印を描く関数を書きたいと思います。 矢印は浮いて いるようにしたいです。何かアイデアはありますか?)
void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
ChartRedraw(0);
}
矢印が浮くとはどういう意味ですか?
PS: 矢印のオブジェクトは、x、y座標やコーナーを使用していません。時間と価格を使っています。
mladenさん、こんにちは。
MTFを作成してください。
リガード