Topics
Replies
breakermind
10 Aug 2014, 15:33
Copy Positions
Hi,
I need to login directly with your username and password.
So there is no need to sign up after the PartnerID or something only use account number and password.
But there is better way to make money (COPY FROM CONTEST TO REAL ACCOUNTS (account Start from 100USD)):
http://www.dukascopy.com/swiss/english/forex/social-signal-trading/
Regards All
@breakermind
breakermind
30 Jul 2014, 09:38
RE:
Hi,
Time to get out of here and do not waste the time ...
Regards and Bye All.
@breakermind
breakermind
26 Jul 2014, 10:11
RE: RE:
Hey,
When cAlgo will be able to login on server with c # for the transaction?
Just like here:
http://developers.xstore.pro/api/wrappers.html
or
http://www.mforex.pl/mForex-api-csharp
And if there is an opportunity, please a concrete example?
Regards and Bye.
@breakermind
breakermind
24 Jul 2014, 23:53
RE:
Hi,
is it possible set PLACE_BID and PLACE_OFFER orders in cAlgo?
Thanks.
@breakermind
breakermind
16 Jul 2014, 10:10
RE: RE:
protected override void OnStart() { VolumeSell = Volume; VolumeBuy = Volume; // positions spacing Spacing = 25; // set pending up(BUY) if (SetBUY) { for (int i = 1; i < HowMuchPositions; i++) { PlaceStopOrder(TradeType.Buy, Symbol, VolumeBuy, Symbol.Ask + Spacing * i * Symbol.PipSize); } } // set pending down(SELL) if (SetSELL) { Multi = 0; for (int j = 1; j < HowMuchPositions; j++) { PlaceStopOrder(TradeType.Sell, Symbol, VolumeSell, Symbol.Bid - Spacing * j * Symbol.PipSize); } } }
@breakermind
breakermind
16 Jul 2014, 09:47
RE:
Hi,
read:
or cancel pending order and set new one
Bye
@breakermind
breakermind
14 Jul 2014, 22:14
( Updated at: 23 Jan 2024, 13:11 )
Fire cBot
Hi,
FIre cBot (300 Pips for luck)
[/algos/cbots/show/521]
//================================================================================ // SimpleWeekRobo // Start at Week start(Day start 00:00) // (M15-M30 regression(2000,2,3)(1.8,2,2000)) // 100Pips levels, suport or resistance // Simple Monday-Friday script without any security with close when earn // If CloseWhenEarn == 0 then dont close positions // If TP or SL == 0 dont modifing positions // If TrailingStop > 0 ==> BackStop == 0 // Multi positions yes or no //================================================================================ using System; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class Fire : Robot { //================================================================================ // Parametrs //================================================================================ private Position _position; private double WeekStart; private double LastProfit = 0; private double StopMoneyLoss = 0; [Parameter(DefaultValue = true)] public bool SetBUY { get; set; } [Parameter(DefaultValue = true)] public bool SetSELL { get; set; } [Parameter(DefaultValue = 300000, MinValue = 1000)] public int Volume { get; set; } [Parameter(DefaultValue = true)] public bool MultiVolume { get; set; } [Parameter(DefaultValue = 10, MinValue = 5)] public int Spacing { get; set; } [Parameter(DefaultValue = 10, MinValue = 2)] public int HowMuchPositions { get; set; } [Parameter("TakeProfitPips", DefaultValue = 0, MinValue = 0)] public int TP { get; set; } [Parameter("StopLossPips", DefaultValue = 0, MinValue = 0)] public int SL { get; set; } [Parameter(DefaultValue = 0, MinValue = 0)] public int BackStop { get; set; } [Parameter(DefaultValue = 5, MinValue = 0)] public int BackStopValue { get; set; } [Parameter(DefaultValue = 0, MinValue = 0)] public int TrailingStop { get; set; } // close when earn [Parameter(DefaultValue = 0, MinValue = 0)] public int CloseWhenEarn { get; set; } // safe deposit works when earn 100% [Parameter(DefaultValue = false)] public bool MoneyStopLossOn { get; set; } [Parameter(DefaultValue = 1000, MinValue = 100)] public int StartDeposit { get; set; } [Parameter(DefaultValue = 50, MinValue = 10, MaxValue = 100)] public int StopLossPercent { get; set; } [Parameter(DefaultValue = 2, MinValue = 1, MaxValue = 100)] public int OnWhenDepositX { get; set; } private int Multi = 0; private int VolumeBuy = 0; private int VolumeSell = 0; //================================================================================ // OnStart //================================================================================ protected override void OnStart() { VolumeSell = Volume; VolumeBuy = Volume; WeekStart = Symbol.Ask; // set pending up(BUY) if (SetBUY) { for (int i = 1; i < HowMuchPositions; i++) { Multi = Multi + Spacing; if (MultiVolume == true) { if (Multi > 100) { VolumeBuy = VolumeBuy + Volume; } if (Multi > 200) { VolumeBuy = VolumeBuy + Volume; } if (Multi > 300) { VolumeBuy = VolumeBuy + Volume; } } PlaceStopOrder(TradeType.Buy, Symbol, VolumeBuy, Symbol.Ask + Spacing * i * Symbol.PipSize); } } // set pending down(SELL) if (SetSELL) { Multi = 0; for (int j = 1; j < HowMuchPositions; j++) { Multi = Multi + Spacing; if (MultiVolume == true) { if (Multi > 100) { VolumeBuy = VolumeSell + Volume; } if (Multi > 200) { VolumeBuy = VolumeSell + Volume; } if (Multi > 300) { VolumeBuy = VolumeSell + Volume; } } PlaceStopOrder(TradeType.Sell, Symbol, VolumeSell, Symbol.Bid - Spacing * j * Symbol.PipSize); } } } //================================================================================ // OnTick //================================================================================ protected override void OnTick() { var netProfit = 0.0; // Take profit if (TP > 0) { foreach (var position in Positions) { // Modifing position tp if (position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, position.StopLoss, GetAbsoluteTakeProfit(position, TP)); } } } // Stop loss if (SL > 0) { foreach (var position in Positions) { // Modifing position sl and tp if (position.StopLoss == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, SL), position.TakeProfit); } } } foreach (var openedPosition in Positions) { netProfit += openedPosition.NetProfit; } if (MoneyStopLossOn == true) { // safe deposit works when earn 100% if (LastProfit < Account.Equity && Account.Equity > StartDeposit * OnWhenDepositX) { LastProfit = Account.Equity; } if (Account.Equity > StartDeposit * 3) { //StopLossPercent = 90; } StopMoneyLoss = LastProfit * (StopLossPercent * 0.01); Print("LastProfit: ", LastProfit); Print("Equity: ", Account.Equity); Print("StopLossMoney: ", StopMoneyLoss); if (Account.Equity < StopMoneyLoss) { //open orders foreach (var openedPosition in Positions) { ClosePosition(openedPosition); } // pending orders foreach (var order in PendingOrders) { CancelPendingOrder(order); } Stop(); } } if (netProfit >= CloseWhenEarn && CloseWhenEarn > 0) { // open orders foreach (var openedPosition in Positions) { ClosePosition(openedPosition); } // pending orders foreach (var order in PendingOrders) { CancelPendingOrder(order); } Stop(); } //===================================================== Back Trailing if (BackStop > 0) { foreach (var openedPosition in Positions) { Position Position = openedPosition; if (Position.TradeType == TradeType.Buy) { double distance = Symbol.Bid - Position.EntryPrice; if (distance >= BackStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Bid - BackStopValue * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } else { double distance = Position.EntryPrice - Symbol.Ask; if (distance >= BackStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Ask + BackStopValue * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } } } //===================================================== Trailing if (TrailingStop > 0 && BackStop == 0) { foreach (var openedPosition in Positions) { Position Position = openedPosition; if (Position.TradeType == TradeType.Buy) { double distance = Symbol.Bid - Position.EntryPrice; if (distance >= TrailingStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Bid - TrailingStop * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null || newStopLossPrice > Position.StopLoss) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } else { double distance = Position.EntryPrice - Symbol.Ask; if (distance >= TrailingStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Ask + TrailingStop * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null || newStopLossPrice < Position.StopLoss) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } } } } //================================================================================ // OnPositionOpened //================================================================================ protected override void OnPositionOpened(Position openedPosition) { int BuyPos = 0; int SellPos = 0; foreach (var position in Positions) { // Count opened positions if (position.TradeType == TradeType.Buy) { BuyPos = BuyPos + 1; } if (position.TradeType == TradeType.Sell) { SellPos = SellPos + 1; } } Print("All Buy positions: " + BuyPos); Print("All Sell positions: " + SellPos); } // end OnPositionOpened //================================================================================ // OnBar //================================================================================ protected override void OnBar() { } //================================================================================ // OnPositionClosed //================================================================================ protected override void OnPositionClosed(Position closedPosition) { } //================================================================================ // OnStop //================================================================================ protected override void OnStop() { } //================================================================================ // Function //================================================================================ private void Buy() { ExecuteMarketOrder(TradeType.Buy, Symbol, 10000, "", 1000, 1000); } private void Sell() { ExecuteMarketOrder(TradeType.Sell, Symbol, 10000, "", 1000, 1000); } private void ClosePosition() { if (_position != null) { ClosePosition(_position); _position = null; } } //================================================================================ // modify SL and TP //================================================================================ private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { //Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice - (Symbol.PipSize * stopLossInPips) : position.EntryPrice + (Symbol.PipSize * stopLossInPips); } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { //Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice + (Symbol.PipSize * takeProfitInPips) : position.EntryPrice - (Symbol.PipSize * takeProfitInPips); } //================================================================================ // Robot end //================================================================================ } }
Regards
@breakermind
breakermind
14 Jul 2014, 13:17
RE: RE: Avatar uploads
Why do not I see the avatar and I can not change the picture?
@breakermind
breakermind
14 Jul 2014, 13:06
RE: RE: RE: Cool indicator
Hi,
is there a better way to make money with cBot?
because I do not know whether should I fight with the calgo?
Thanks and Regards
@breakermind
breakermind
13 Jul 2014, 12:33
Avatar uploads
Hi,
what is wrong with the display and uploads avatars in profil page after login to forum ?
Regards
@breakermind
breakermind
11 Jul 2014, 13:15
( Updated at: 21 Dec 2023, 09:20 )
Cool indicator
Indicator (when start cBot):
M15(strdDev: 1.8, Period 2000, degree: 3) only PRC, SQH, SQL
Regards
@breakermind
breakermind
11 Jul 2014, 12:17
( Updated at: 21 Dec 2023, 09:20 )
:]
Week 30/06/2014 - 04/07/2014:
Week 07/07/2014 - 10/07/2014:
@breakermind
breakermind
07 Jul 2014, 13:29
( Updated at: 21 Dec 2023, 09:20 )
The End
2 days 50 positions:]
@breakermind
breakermind
05 Jul 2014, 15:27
RE: RE:
Update
//================================================================================ // SimpleWeekRobo // Start at Week start(Day start 00:00) // (M15-M30 regression(2000,2,3)(1.7,2,2000)) // 100Pips levels, suport or resistance // Simple Monday-Friday script without any security with close when earn // If CloseWhenEarn == 0 then dont close positions // If TP or SL == 0 dont modifing positions // If TrailingStop > 0 ==> BackStop == 0 //================================================================================ using System; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Requests; using cAlgo.Indicators; namespace cAlgo.Robots { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class SimpleWeekRobo : Robot { //================================================================================ // Parametrs //================================================================================ private Position _position; private double WeekStart; private double LastProfit = 0; private double StopMoneyLoss = 0; [Parameter(DefaultValue = true)] public bool SetBUY { get; set; } [Parameter(DefaultValue = true)] public bool SetSELL { get; set; } [Parameter(DefaultValue = 300000, MinValue = 1000)] public int Volume { get; set; } [Parameter(DefaultValue = 25, MinValue = 5)] public int Spacing { get; set; } [Parameter(DefaultValue = 10, MinValue = 2)] public int HowMuchPositions { get; set; } [Parameter("TakeProfitPips", DefaultValue = 0, MinValue = 0)] public int TP { get; set; } [Parameter("StopLossPips", DefaultValue = 0, MinValue = 0)] public int SL { get; set; } [Parameter(DefaultValue = 0, MinValue = 0)] public int BackStop { get; set; } [Parameter(DefaultValue = 5, MinValue = 0)] public int BackStopValue { get; set; } [Parameter(DefaultValue = 0, MinValue = 0)] public int TrailingStop { get; set; } // close when earn [Parameter(DefaultValue = 0, MinValue = 0)] public int CloseWhenEarn { get; set; } // safe deposit works when earn 100% [Parameter(DefaultValue = false)] public bool MoneyStopLossOn { get; set; } [Parameter(DefaultValue = 1000, MinValue = 100)] public int StartDeposit { get; set; } [Parameter(DefaultValue = 50, MinValue = 10, MaxValue = 100)] public int StopLossPercent { get; set; } [Parameter(DefaultValue = 2, MinValue = 1, MaxValue = 100)] public int OnWhenDepositX { get; set; } //================================================================================ // OnStart //================================================================================ protected override void OnStart() { WeekStart = Symbol.Ask; // set pending up(BUY) if (SetBUY) { for (int i = 1; i < HowMuchPositions; i++) { PlaceStopOrder(TradeType.Buy, Symbol, Volume, Symbol.Ask + Spacing * i * Symbol.PipSize); } } // set pending down(SELL) if (SetSELL) { for (int j = 1; j < HowMuchPositions; j++) { PlaceStopOrder(TradeType.Sell, Symbol, Volume, Symbol.Bid - Spacing * j * Symbol.PipSize); } } } //================================================================================ // OnTick //================================================================================ protected override void OnTick() { var netProfit = 0.0; // Take profit if (TP > 0) { foreach (var position in Positions) { // Modifing position tp if (position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, position.StopLoss, GetAbsoluteTakeProfit(position, TP)); } } } // Stop loss if (SL > 0) { foreach (var position in Positions) { // Modifing position sl and tp if (position.StopLoss == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, SL), position.TakeProfit); } } } foreach (var openedPosition in Positions) { netProfit += openedPosition.NetProfit; } if (MoneyStopLossOn == true) { // safe deposit works when earn 100% if (LastProfit < Account.Equity && Account.Equity > StartDeposit * OnWhenDepositX) { LastProfit = Account.Equity; } if (Account.Equity > StartDeposit * 3) { //StopLossPercent = 90; } StopMoneyLoss = LastProfit * (StopLossPercent * 0.01); Print("LastProfit: ", LastProfit); Print("Equity: ", Account.Equity); Print("StopLossMoney: ", StopMoneyLoss); if (Account.Equity < StopMoneyLoss) { //open orders foreach (var openedPosition in Positions) { ClosePosition(openedPosition); } // pending orders foreach (var order in PendingOrders) { CancelPendingOrder(order); } Stop(); } } if (netProfit >= CloseWhenEarn && CloseWhenEarn > 0) { // open orders foreach (var openedPosition in Positions) { ClosePosition(openedPosition); } // pending orders foreach (var order in PendingOrders) { CancelPendingOrder(order); } Stop(); } //===================================================== Back Trailing if (BackStop > 0) { foreach (var openedPosition in Positions) { Position Position = openedPosition; if (Position.TradeType == TradeType.Buy) { double distance = Symbol.Bid - Position.EntryPrice; if (distance >= BackStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Bid - BackStopValue * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } else { double distance = Position.EntryPrice - Symbol.Ask; if (distance >= BackStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Ask + BackStopValue * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } } } //===================================================== Trailing if (TrailingStop > 0 && BackStop == 0) { foreach (var openedPosition in Positions) { Position Position = openedPosition; if (Position.TradeType == TradeType.Buy) { double distance = Symbol.Bid - Position.EntryPrice; if (distance >= TrailingStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Bid - TrailingStop * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null || newStopLossPrice > Position.StopLoss) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } else { double distance = Position.EntryPrice - Symbol.Ask; if (distance >= TrailingStop * Symbol.PipSize) { double newStopLossPrice = Math.Round(Symbol.Ask + TrailingStop * Symbol.PipSize, Symbol.Digits); if (Position.StopLoss == null || newStopLossPrice < Position.StopLoss) { ModifyPosition(Position, newStopLossPrice, Position.TakeProfit); } } } } } } //================================================================================ // OnPositionOpened //================================================================================ protected override void OnPositionOpened(Position openedPosition) { int BuyPos = 0; int SellPos = 0; foreach (var position in Positions) { // Count opened positions if (position.TradeType == TradeType.Buy) { BuyPos = BuyPos + 1; } if (position.TradeType == TradeType.Sell) { SellPos = SellPos + 1; } } Print("All Buy positions: " + BuyPos); Print("All Sell positions: " + SellPos); } // end OnPositionOpened //================================================================================ // OnBar //================================================================================ protected override void OnBar() { } //================================================================================ // OnPositionClosed //================================================================================ protected override void OnPositionClosed(Position closedPosition) { } //================================================================================ // OnStop //================================================================================ protected override void OnStop() { } //================================================================================ // Function //================================================================================ private void Buy() { ExecuteMarketOrder(TradeType.Buy, Symbol, 10000, "", 1000, 1000); } private void Sell() { ExecuteMarketOrder(TradeType.Sell, Symbol, 10000, "", 1000, 1000); } private void ClosePosition() { if (_position != null) { ClosePosition(_position); _position = null; } } //================================================================================ // modify SL and TP //================================================================================ private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { //Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice - (Symbol.PipSize * stopLossInPips) : position.EntryPrice + (Symbol.PipSize * stopLossInPips); } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { //Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice + (Symbol.PipSize * takeProfitInPips) : position.EntryPrice - (Symbol.PipSize * takeProfitInPips); } //================================================================================ // Robot end //================================================================================ } }
Bye.
@breakermind
breakermind
03 Jul 2014, 20:21
RE:
fwends said:
When running your bot with the latest code
It fails to enter the take profit, it tries to modify the position, but the brokers says "invalid request"
Can you fix this please
Hi,
You have to change yourself.
cBots made me bored :)
Regards and Bye.
@breakermind
breakermind
28 Jun 2014, 11:43
RE: Modyfikacja sl and tp with label
breakermind said:
Hi all,
Modyfikacja sl and tp with label:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class Label_SL_TP_Modify : Robot { [Parameter("Label", DefaultValue = "WOW")] public string Label { get; set; } [Parameter("LabelNumber", DefaultValue = 1, MinValue = 1)] public int LabelNumber { get; set; } [Parameter("Volume", DefaultValue = 10000, MinValue = 1000)] public int Volume { get; set; } [Parameter("Stop Loss (pips)", DefaultValue = 40, MinValue = 1)] public int StopLossInPips { get; set; } [Parameter("Take Profit (pips)", DefaultValue = 40, MinValue = 1)] public int TakeProfitInPips { get; set; } [Parameter("Spacing(Pips)", DefaultValue = 5, MinValue = 1)] public int Spacing { get; set; } public string LabelAll; protected override void OnStart() { // All label LabelAll = Label + LabelNumber + Symbol; for (int i = 1; i < 5; i++) { PlaceStopOrder(TradeType.Buy, Symbol, Volume, Symbol.Ask + Spacing * i * Symbol.PipSize, LabelAll); } // set pending down(SELL) for (int j = 1; j < 5; j++) { PlaceStopOrder(TradeType.Sell, Symbol, Volume, Symbol.Bid - Spacing * j * Symbol.PipSize, LabelAll); } } protected override void OnTick() { foreach (var position in Positions.FindAll(LabelAll)) { // Modifing position sl and tp if (position.StopLoss == null) { Print("Position {1} SL price is {0}", position.StopLoss, position.Id); } if (position.TakeProfit == null) { Print("Position {1} TP price is {0}", position.StopLoss, position.Id); } if (position.StopLoss == null && position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, StopLossInPips), GetAbsoluteTakeProfit(position, TakeProfitInPips)); } if (position.StopLoss == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, StopLossInPips), position.TakeProfit); } if (position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, position.StopLoss, GetAbsoluteTakeProfit(position, TakeProfitInPips)); } } } //================================================================================ // modify SL and TP //================================================================================ private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice - (Symbol.PipSize * stopLossInPips) : position.EntryPrice + (Symbol.PipSize * stopLossInPips); } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice + (Symbol.PipSize * takeProfitInPips) : position.EntryPrice - (Symbol.PipSize * takeProfitInPips); } } }It's somewhere in the examples or finished cbots.
Have a nice day.
or with Symbol.Code
LabelAll = Label + LabelNumber + Symbol.Code;
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class Label_SL_TP_Modify : Robot { [Parameter("Label", DefaultValue = "WOW")] public string Label { get; set; } [Parameter("LabelNumber", DefaultValue = 1, MinValue = 1)] public int LabelNumber { get; set; } [Parameter("Volume", DefaultValue = 10000, MinValue = 1000)] public int Volume { get; set; } [Parameter("Stop Loss (pips)", DefaultValue = 40, MinValue = 1)] public int StopLossInPips { get; set; } [Parameter("Take Profit (pips)", DefaultValue = 40, MinValue = 1)] public int TakeProfitInPips { get; set; } [Parameter("Spacing(Pips)", DefaultValue = 5, MinValue = 1)] public int Spacing { get; set; } public string LabelAll; protected override void OnStart() { // All label LabelAll = Label + LabelNumber + Symbol.Code; for (int i = 1; i < 5; i++) { PlaceStopOrder(TradeType.Buy, Symbol, Volume, Symbol.Ask + Spacing * i * Symbol.PipSize, LabelAll); } // set pending down(SELL) for (int j = 1; j < 5; j++) { PlaceStopOrder(TradeType.Sell, Symbol, Volume, Symbol.Bid - Spacing * j * Symbol.PipSize, LabelAll); } } protected override void OnTick() { foreach (var position in Positions.FindAll(LabelAll)) { // Modifing position sl and tp if (position.StopLoss == null) { Print("Position {1} SL price is {0}", position.StopLoss, position.Id); } if (position.TakeProfit == null) { Print("Position {1} TP price is {0}", position.StopLoss, position.Id); } if (position.StopLoss == null && position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, StopLossInPips), GetAbsoluteTakeProfit(position, TakeProfitInPips)); } if (position.StopLoss == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, GetAbsoluteStopLoss(position, StopLossInPips), position.TakeProfit); } if (position.TakeProfit == null) { Print("Modifying {0}", position.Id); ModifyPosition(position, position.StopLoss, GetAbsoluteTakeProfit(position, TakeProfitInPips)); } } } //================================================================================ // modify SL and TP //================================================================================ private double GetAbsoluteStopLoss(Position position, int stopLossInPips) { Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice - (Symbol.PipSize * stopLossInPips) : position.EntryPrice + (Symbol.PipSize * stopLossInPips); } private double GetAbsoluteTakeProfit(Position position, int takeProfitInPips) { Symbol Symbol = MarketData.GetSymbol(position.SymbolCode); return position.TradeType == TradeType.Buy ? position.EntryPrice + (Symbol.PipSize * takeProfitInPips) : position.EntryPrice - (Symbol.PipSize * takeProfitInPips); } } }
Regards
@breakermind
breakermind
29 Aug 2014, 11:54
Symbols
Hi,
and symbol with GBP like GBPCAD ;)
Bye.
@breakermind